据说在javacript能调用C#写的函数,看以下是可以的:
public string ss() ...{ return("a"); } 2、在html里用<%=fucntion()%>可以调用 前台脚本 <script language=javascript> var a = "<%=ss()%>"; alert(a); </script>
看了以上有两点不明白,请各位高手赐教:
1、对于在javascript中能调用C#代码很不明白,因为javascript是在客户端运行的脚本,而C#函数是在服务端运行的,前者怎么能调用后者呢?
2、对于以上的"<%= %> 不明白,解释一下
public string GetString(){return "abcde";}
var a = "<%=GetString()%>"
当页面运行之后会返回服务器端方法的结果,变成
var a = "abcde";
,其实你只要去尝试下就知道了,分清服务器端和客户端是怎么执行和呈现的,当你看到最终页面的时候服务器端代码已经执行并返回html+js等等代码...
嗯,我也想知道答案!
这个其实也不叫执行,因为这个所谓能执行的C#的函数返回的值肯定是不会实时变化的。也就是说在这个HTML页面初始化好后,这个<%=fucntion()%>服务端标记就会被替换成具体的值了。你可以理解为是客户端JS值的初始化,而这个初始化值来源于服务端。因为aspx本身是继承于aspx.cs 的,所友在aspx这个文件里只要包含在<%%>里面的,就可以调用aspx.cs中protected或者public的函数了
数据绑定表达式类型
一个变量
例:<asp:Label ID="Label1" runat="server" Text="<%#变量名%>"></asp:Label>
服务器控件的属性值
例: <asp:Label ID="Label1" runat="server" Text="<%#TextBox2.Text %>"></asp:Label>
数组等集合对象
例如把一个数组绑定到列表控件,例如ListBox,Repeater等,此时只需要把属性DataSource='<%# 数组名%>'
一个表达式
例:Person是一个对象,Name和City是它的2个属性,则数据绑定表达式:<%#(Person.Name + " " + Person.City)%>
一个方法
例:<%#GetUserName()%>。GetUserName()是一个已经定义的C#方法,一般要求有返回值。
Eval,DateBinder.Eval取得的数据表的字段
这个不是javascript调用c#。在ASP.NET中,所谓的html页面(.aspx)还会再次编译,最终生成普通的c#类。在这次编译中,javascript和html会以字符串形式保存,<%%>之间的部分当作普通的cs代码编译。<%%>是ASP.NET里的,和javascript本身没什么关系。