WebControls:Title是什么控件?
WebControls:Title id= "title " runat= "server " CaptionName= <%#GetProjectName() %> > </WebControls:Title> 这里的CaptionName如果我用#的方式可以返回正确的值,如果我用=的方式则报错,你可以试一下 ------------------------ 在runat= "server "不能使用 <%= , <%= 是显示服务器端后台的信息,就是前台跟后台通信的,而runat= "server "的控件在后台可以直接使用,不需要 <%=来显示服务器端后台的信息 |
<%#GetUserName() %> 这是数据绑定语法,需要调用 DataBind 才能生效。
<%=GetUserName() %> 这是 Response.Write 的缩写形式,无需调用 DataBind。这段代码不能放在 runat= "server " 的控件中,否则无效。例如, <asp:label id= "a " runat= "server " text= ' <%=GetUserName() %> ' /> 不会调用GetUserName方法。
对控件的属性使用 <%#表达式是被允许的,这主要用于分层数据绑定。而这样的表达式则会被解释为一段赋值代码。注册在控件的DataBinding事件上。
在runat= "server "不能使用 <%= , <%= 是显示服务器端后台的信息,就是前台跟后台通信的,而runat= "server "的控件在后台可以直接使用,不需要 <%=来显示服务器端后台的信息
=等号就是Response.Write()方法的缩写,这在asp里就是这样了。而#是用于绑定的。
我想,在执行顺序上应该有区别,#号先执行,所以能用于runat=server的控件里面。=号是在服务器端控件解析完后才执行,不能用于runat=server |
#比=的执行顺序要早,
#只能用于runat=server的服务器控件,用来参与服务器控件的数据绑定及赋值等,此时页面正在服务器生成过程中;
=只用于客户端与服务端的通讯,此时服务器端控件全部构造完毕,=的对象均是客户端的元素、控件或回显等