2010-09-16 61 views
5

这些标记有什么区别?ASP.NET代码表达式,数据绑定和其他声明性表达式

<% <%# <%= <%$

更重要的是,我怎么显示在ASP.NET控件使用声明语法页属性?我试图在ASP.NET控件中执行此操作。任务是设置一个标签的文本,但我不想在编辑的时候想要更改输出控件。我得到关于服务器端控件的错误不能包含这个语法。我不确定我需要一个数据绑定控件来控制我想要做的事情,但这是另一种选择。

部分答案即将到来。

更新 在ASP.NET 4.5中有一个新标签?网站

<%:

回答

9

部分答案

从麦克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语法然后我得到有关数据绑定控件错误或我使用了<%,然后我得到一个服务器端控制错误。任何更多的颜色赞赏..不知道我真的明白发生了什么事。

也许它与渲染阶段有关。

很少有更多的观察:

我可以使用<%=无数据绑定和获得属性值,但在服务器端控制,而得到错误不能使用它。

如果我在服务器端控件中使用<%#但我需要执行Page.Databind。

有趣的是,我可以使用<%=或<%#当我想呈现不在控件内的文本时。虽然后者需要数据绑定。

新<%:语法解释的,也被称为代码表达式语法

在ASP.NET 4我们引入了一个新的代码表达式语法(<%: %>)呈现输出像< %=%>块会做 - 但也会自动在编码之前对其进行HTML编码。

http://weblogs.asp.net/scottgu/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2

+0

另一个问题:<%# %>标记必须是asp.net标记属性中唯一的值。例如,你不能有... Text =“$ <%#x.Amount%>”... 它必须是... Text =“<%#”$“+ x.Amount%> “... – David 2014-06-03 06:34:46

0

没有,服务器端控件不能。例如,我有一个名为SkinPath的字符串属性,它为我提供了当前主题的完整App_Themes路径。我使用的方式如下:

<img src='<%= SkinPath %>/Images/myImage.png' /> 

但是,以下不工作:

<asp:Image ID='image' runat='server' ImageUrl='<%= SkinPath %>/Images/myImage.png' /> 

相反,它呈现src字面上的结果<img>

+0

我更新了我的答案。我可以使用<%#并且可以用于绑定到一个属性。你有更多解释为什么<%不起作用?是否因为渲染步骤的工作方式? – 2010-09-16 15:15:49

+0

柯蒂斯,我有一个错字:我应该把<%= SkinPath%>和不,我没有任何推理。在我遇到一个通过将所有<%=更改为<%#而解决的错误之前,我确实记得在一个项目中。有些事情你花时间弄清楚。其他时候,你完成并获得报酬。 :) – Brad 2010-09-16 15:45:19