当前位置:编程学习 > C#/ASP.NET >>

#[井号]和=[等号]的区别

前台页面中

<%#GetUserName() %>

<%=GetUserName() %>

到底有什么区别,搜索引擎不好搜索到的说 --------------------编程问答-------------------- <%#在绑定中使用 <%=GetUserName()%> 取GetUserName方法的返回值。 --------------------编程问答-------------------- 看下MSDN,可能更清楚 --------------------编程问答-------------------- To BearRui(AK-47):
不是很清楚,可否界定一下绑定的范围?

To wangyongli():
我就是在MSDN上没找到呢,哪篇文章讲了?给个链接 --------------------编程问答-------------------- <%#是绑定表达式,就是你必须使用了DataBind()方法,才能使用<%#

<%= 是显示服务器端后台的信息
--------------------编程问答-------------------- mark --------------------编程问答-------------------- c#?c=? --------------------编程问答-------------------- 一眼就看出来了
长的不一样 --------------------编程问答-------------------- 别以为插了两把刀就不认识你 --------------------编程问答-------------------- To BearRui(AK-47):

举个具体的例子吧,这个问题源于我在项目中的一段代码:

<WebControls:Title id="title" runat="server" CaptionName=<%#GetProjectName() %>></WebControls:Title> 

这里的CaptionName如果我用#的方式可以返回正确的值,如果我用=的方式则报错,你可以试一下

我现在想知道#与=的区别的官方解释,可是我找不到:(
--------------------编程问答-------------------- #在绑定中使用 
<%=GetUserName()%> 取GetUserName方法的返回值。 --------------------编程问答-------------------- <%#只能在数据绑定中使用,在<%#块中,可以访问到Container对象和Eval方法。,且<%#中的代码只有在DataBind时才会被调用。 --------------------编程问答-------------------- WebControls:Title是什么控件?


WebControls:Title id="title" runat="server" CaptionName=<%#GetProjectName() %>></WebControls:Title>

这里的CaptionName如果我用#的方式可以返回正确的值,如果我用=的方式则报错,你可以试一下
------------------------
在runat="server"不能使用<%= ,<%= 是显示服务器端后台的信息,就是前台跟后台通信的,而runat="server"的控件在后台可以直接使用,不需要<%=来显示服务器端后台的信息 --------------------编程问答-------------------- DataBind与getValue --------------------编程问答-------------------- 顶贴了先~~关注学习下.... --------------------编程问答-------------------- 是不是可以理解为:一个夹杂在服务器端脚本里,一个夹杂在html脚本里? --------------------编程问答-------------------- WebControls:Title是自定义的控件 --------------------编程问答-------------------- =输出静态值,#动态绑定对象, --------------------编程问答--------------------
<%#GetUserName() %> 这是数据绑定语法,需要调用 DataBind 才能生效。

<%=GetUserName() %> 这是 Response.Write 的缩写形式,无需调用 DataBind。这段代码不能放在 runat="server" 的控件中,否则无效。例如,<asp:label id="a" runat="server" text='<%=GetUserName() %>' /> 不会调用GetUserName方法。



--------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 在runat="server"不能使用<%= ,<%= 是显示服务器端后台的信息,就是前台跟后台通信的,而runat="server"的控件在后台可以直接使用,不需要<%=来显示服务器端后台的信息


补充一点。

对控件的属性使用<%#表达式是被允许的,这主要用于分层数据绑定。而这样的表达式则会被解释为一段赋值代码。注册在控件的DataBinding事件上。 --------------------编程问答-------------------- =等号就是Response.Write()方法的缩写,这在asp里就是这样了。而#是用于绑定的。

我想,在执行顺序上应该有区别,#号先执行,所以能用于runat=server的控件里面。=号是在服务器端控件解析完后才执行,不能用于runat=server --------------------编程问答-------------------- 讲的很明白了 --------------------编程问答-------------------- mark~~ --------------------编程问答-------------------- 上面讲的很明白了   

补充一点  # 和 = 之间的差别只是多了两竖 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 网络编程中常见到同步,异步调用,请问它们有何区别,分别适用于什么场合呢? --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 别以为插了两把刀就不认识你 --------------------编程问答-------------------- mark --------------------编程问答-------------------- mark --------------------编程问答-------------------- 谢谢各位的回复!

我来总结一下,大家看看对不对

个人比较倾向 macker0030(今晚仰卧明早起坐,明天俯卧后天撑) 的解释 - 在执行顺序上应该有区别

#比=的执行顺序要早,
#只能用于runat=server的服务器控件,用来参与服务器控件的数据绑定及赋值等,此时页面正在服务器生成过程中;
=只用于客户端与服务端的通讯,此时服务器端控件全部构造完毕,=的对象均是客户端的元素、控件或回显等

--------------------编程问答-------------------- 楼上的总结可以能不对

与服务器客户端控件没有关系

#只有在调用 databind方法后才能获取
=不用 象调用自身变量一样调用 --------------------编程问答-------------------- 嗯……楼主的总结把错的都留下了,把对的都扔掉了。多么经典的去其糟粕取其精华啊。 --------------------编程问答-------------------- 嗯……楼主的总结把错的都留下了,把对的都扔掉了。多么经典的取其糟粕去其精华啊。
--------------------编程问答-------------------- 不好意思哦

那楼上的就总结一下吧,实在找不到官方的文档,只能看大家说的靠自己的理解瞎猜 --------------------编程问答-------------------- 意思知道,原理不知道,关注中!!! --------------------编程问答-------------------- 还有人能出来总结一下不? --------------------编程问答-------------------- mark --------------------编程问答-------------------- 等于号是Response.Write
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,