这些标签有什么不同?
<% <%# <%= <%$
更重要的是,如何在ASP.NET控件中使用声明性语法显示页面属性?我试图在ASP.NET控件中执行此操作。任务是设置标签的文本但我不想在我想要更改输出控件的情况下以编程方式执行此操作。我收到有关服务器端控件的错误,不能包含此语法。我不确定我需要一个数据绑定控制来实现我想做的事情,但这是另一种选择。
部分答案即将到来。
更新 我在ASP.NET 4.5中看到过一个新标签?站点
<%:
答案 0 :(得分:9)
部分答案
引自Mike Banavige的话< %%>嵌入式代码块是 在执行期间执行的服务器代码 页面的渲染阶段。中的代码 块可以执行编程 声明和调用函数 当前页面类。 http://msdn2.microsoft.com/en-gb/library/ms178135(vs.80).aspx
<%=%>最有用的显示 单件信息。 http://msdn2.microsoft.com/en-us/library/6dwsdcf5(VS.71).aspx
<%#%>数据绑定表达式语法。 http://msdn2.microsoft.com/en-us/library/bda9bbfx.aspx
<%$%> ASP.NET表达式。 http://msdn2.microsoft.com/en-us/library/d5bd1tad.aspx
<%@%>指令语法。 http://msdn2.microsoft.com/en-us/library/xz702w3e(VS.80).aspx
<% - - %>服务器端注释。 http://msdn2.microsoft.com/en-US/library/4acf8afk.aspx
更新
好的,这似乎有用
<asp:Label ID="MyLabel" runat="server" Text='<%# MyProperty%>'></asp:Label>
如果我使用eval语法然后我得到关于数据绑定控件的错误或我使用&lt;%然后我得到服务器端控件错误。任何更多的颜色赞赏..不确定我真的明白发生了什么。
也许它与渲染阶段有关。
几点观察:
我可以使用&lt;%=不使用数据绑定并获取属性值,但不能在服务器端控件中使用它而不会出现错误。
如果我在服务器端控件中使用&lt;%#但我需要执行Page.Databind。
有趣的是,当我想渲染不在控件内的文本时,我可以使用&lt;%=或&lt;%#。虽然后者需要数据绑定。
解释了新的&lt;%:语法,也称为代码表达式语法
使用ASP.NET 4,我们引入了一种新的代码表达式语法(&lt;%: %&gt;)呈现类似&lt;%=%&gt;的输出块做 - 但也是 在执行此操作之前,会自动对HTML进行编码。
答案 1 :(得分:0)
不,服务器端控件不能。例如,我有一个名为SkinPath的字符串属性,它为我提供了当前主题的完整App_Themes路径。我用以下方式使用它:
<img src='<%= SkinPath %>/Images/myImage.png' />
但是,以下情况不起作用:
<asp:Image ID='image' runat='server' ImageUrl='<%= SkinPath %>/Images/myImage.png' />
相反,它会在结果src
中呈现<img>
字面。