在C#的cs文件中的变量怎么跟JavaScript中的变量交互呢?

时间:2021-12-24 04:11:45
现在我要做一个发送以及接受消息的页面,在数据库中有消息和是否已读两列,默认未读,现在我不会怎样使js中的某个变量来判断这个值,当是未读时,alert一个警告框,当时已读时则不弹框;
另外假设我在aspx中放了一个button,在cs中int i=0,button的事件是i=1;然后怎么让js来获取这个值呢?当i=1时alert“i的值是1”,当i=0时alert“i的值是0”?
说白了就是cs和JavaScript的传值我不会,求指导,给一段简单的代码看看,不要简单的说用什么来实现,初学,还不太懂,只是在模仿的阶段,万分感谢

10 个解决方案

#1


那你有没有模仿过使用Response.Write直接在网页上输出js的例子?

#2


第一个问题:
在cs里面
读取数据库,if(未读) response.write("<script type='text/javascript'>alert('警告信息');</script>");

第二个问题:
在页面放一个隐藏控件,如 <input id="hid1" type="hidden" runat="server" />,在cs里hid1.value=1;,在客户端用js
<script type="text/javascript">
  var j=document.getElementById("hid1").value;
    if(j==0||j==1)
    {
        alert(j);
     }
</script>

#3


不可能。

服务器端运行asp.net,只是一瞬间,页面生命周期就结束了,然后远程浏览器才能获得 html,才会随后执行 js 。当年你的页面回发(Button执行),此时浏览器端在等着服务器端新的 html 到来,然后就刷新整个页面,此时服务器端的asp.net 页面对象也早就销毁了。javascript 运行,与asp.net 端运行,或者反过来的次序,都是“分段”的,不是同时的。因此不存在什么坑爹的“交互”说法。

在 asp.net 中,要注册一个将来在浏览器端执行的 js代码,使用 RegisterStartupClient,例如写
private int i;

private void test()
{
    var scp = "window.alert('i 等于 " + i.ToString() + "');";
    ScriptManager.RegisterStartupScript(this, this.GetType(), "i", scp, true);
}


这个是小问题,更重要的问题是要明白asp.net page的生命周期机制,从而在设计 asp.net 代码时懂得安排基本流程。建议你把一本 asp.net 入门书大体学完了,再自己编写程序。如果你是通过一些不靠谱的培训班视频来学习asp.net,而你又没有多年编程基础,那么最好还是不要轻信它们的视频。

#4


在 asp.net 端的页面都已经执行完毕了、销毁了,浏览器端才得到页面、才渲染。因此他们跟们谈不上什么“交互”。

如果你曾经学习过 html(通常,asp.net程序员必须专门学过html/javascript开发网站,然后再学asp.net,否则就容易胡写),那么你从浏览器端看看 Response.Write 和 ScriptManager.RegisterStartupScript 分别输出到 html 里边的结果,就知道哪一个写法才是正确的 html 格式了。错误的格式,会带来许多在浏览器端的 bug,因为它根本就不是一个正常的html,会按照那个错误的流程去执行。

#5


如果你还没有b/s编程的基础概念,建议你学习 html/javascript 网站开发,然后再学习 asp.net (或者其它Web服务端的)原理,然后再学 asp.net。如果你已经自认为是一个 asp.net 编程人员了,而把基础搞错了,那在设计程序过程中就会不断耽误时间。

#6


那我换个词,把交互换成传值,现在我不知道怎么将cs中的值传给js,另外是否已读是在数据库中的额,我不知道怎样再能在js中获取到数据库中的这个列的值

#7


1.前台页面可以得到这一列的值,可以input type='hidden' value="获得的值"
在js中 doucument.getElementByID("")
2.若是js和后台想互相调用,传参数的话,可以网上搜索一下webbrowser控件使用
3.考虑ajax

#8


可以用Ajax来做

#9


我不会ajax啊,提问的时候我说了啊,没接触过啊,求一段代码啊,我还是新手啊 ,还在模仿啊,我写了一个案例啊,求cs和js代码啊,不是只要一个“用ajax来做”这么一句话啊

#10


你这个编程模型没搞清楚,试试ajax,用jquery操作简单一点。

http://blog.csdn.net/chinacsharper/article/details/9748639#comments

#1


那你有没有模仿过使用Response.Write直接在网页上输出js的例子?

#2


第一个问题:
在cs里面
读取数据库,if(未读) response.write("<script type='text/javascript'>alert('警告信息');</script>");

第二个问题:
在页面放一个隐藏控件,如 <input id="hid1" type="hidden" runat="server" />,在cs里hid1.value=1;,在客户端用js
<script type="text/javascript">
  var j=document.getElementById("hid1").value;
    if(j==0||j==1)
    {
        alert(j);
     }
</script>

#3


不可能。

服务器端运行asp.net,只是一瞬间,页面生命周期就结束了,然后远程浏览器才能获得 html,才会随后执行 js 。当年你的页面回发(Button执行),此时浏览器端在等着服务器端新的 html 到来,然后就刷新整个页面,此时服务器端的asp.net 页面对象也早就销毁了。javascript 运行,与asp.net 端运行,或者反过来的次序,都是“分段”的,不是同时的。因此不存在什么坑爹的“交互”说法。

在 asp.net 中,要注册一个将来在浏览器端执行的 js代码,使用 RegisterStartupClient,例如写
private int i;

private void test()
{
    var scp = "window.alert('i 等于 " + i.ToString() + "');";
    ScriptManager.RegisterStartupScript(this, this.GetType(), "i", scp, true);
}


这个是小问题,更重要的问题是要明白asp.net page的生命周期机制,从而在设计 asp.net 代码时懂得安排基本流程。建议你把一本 asp.net 入门书大体学完了,再自己编写程序。如果你是通过一些不靠谱的培训班视频来学习asp.net,而你又没有多年编程基础,那么最好还是不要轻信它们的视频。

#4


在 asp.net 端的页面都已经执行完毕了、销毁了,浏览器端才得到页面、才渲染。因此他们跟们谈不上什么“交互”。

如果你曾经学习过 html(通常,asp.net程序员必须专门学过html/javascript开发网站,然后再学asp.net,否则就容易胡写),那么你从浏览器端看看 Response.Write 和 ScriptManager.RegisterStartupScript 分别输出到 html 里边的结果,就知道哪一个写法才是正确的 html 格式了。错误的格式,会带来许多在浏览器端的 bug,因为它根本就不是一个正常的html,会按照那个错误的流程去执行。

#5


如果你还没有b/s编程的基础概念,建议你学习 html/javascript 网站开发,然后再学习 asp.net (或者其它Web服务端的)原理,然后再学 asp.net。如果你已经自认为是一个 asp.net 编程人员了,而把基础搞错了,那在设计程序过程中就会不断耽误时间。

#6


那我换个词,把交互换成传值,现在我不知道怎么将cs中的值传给js,另外是否已读是在数据库中的额,我不知道怎样再能在js中获取到数据库中的这个列的值

#7


1.前台页面可以得到这一列的值,可以input type='hidden' value="获得的值"
在js中 doucument.getElementByID("")
2.若是js和后台想互相调用,传参数的话,可以网上搜索一下webbrowser控件使用
3.考虑ajax

#8


可以用Ajax来做

#9


我不会ajax啊,提问的时候我说了啊,没接触过啊,求一段代码啊,我还是新手啊 ,还在模仿啊,我写了一个案例啊,求cs和js代码啊,不是只要一个“用ajax来做”这么一句话啊

#10


你这个编程模型没搞清楚,试试ajax,用jquery操作简单一点。

http://blog.csdn.net/chinacsharper/article/details/9748639#comments