Asp.net 为什么<;%=%&燃气轮机;在一种情况下有效,但在另一种情况下无效

Asp.net 为什么<;%=%&燃气轮机;在一种情况下有效,但在另一种情况下无效,asp.net,Asp.net,这是因为昨晚我的回答不好。对为什么一种方法有效而另一种方法无效的好奇一直困扰着我,我希望比我聪明的人能给我正确的解释(或者让我看一下文档)为什么会出现以下行为 给出了以下代码: protected string GetMyText(string input) { return "Hello " + HttpUtility.HtmlEncode(input); } 为什么这样做 <asp:Label ID="Label1" runat="server"><%= GetMy

这是因为昨晚我的回答不好。对为什么一种方法有效而另一种方法无效的好奇一直困扰着我,我希望比我聪明的人能给我正确的解释(或者让我看一下文档)为什么会出现以下行为

给出了以下代码:

protected string GetMyText(string input)
{
  return "Hello " + HttpUtility.HtmlEncode(input);
}
为什么这样做

 <asp:Label ID="Label1" runat="server"><%= GetMyText("LabelText") %></asp:Label>

格式错误:

<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />

使用资源的正确格式:

<asp:Label ID="Label1" runat="server" Text='<%$ Resources:Resource, MyText %' />

使用
等同于放置
响应。在页面中写入(“”
)。执行此操作时:

<asp:Label ID="Label1" runat="server"><%= GetMyText("LabelText") %></asp:Label>
不能对文本属性使用
Response.Write(“”)
,因为它不返回字符串。它将其输出写入响应缓冲区并返回void


如果要在ASP.NET标记中使用服务器标记语法,则需要使用
。标记数据的这种组合绑定了标记中的值。要使其工作,您需要在页面的
Load()
方法中调用
DataBind()
,使其工作。

因为它们都是服务器端指令-第二段代码相当于:

<asp:Label ID="Label1" runat="server" Text='Response.Write(GetMyText("LabelText"))' />

如果全局资源文件中有LabelText,请在服务器控件上执行此操作:

<asp:Label ID="Label1" runat="server" Text="<%$ Resources: resourceName, LabelText %>" />

基本上是指

Write(GetMyText(“LabelText”)

在这里可以。

但是,使用此选项时:

<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />

它基本上意味着:

Label1.Text=Response.Write(GetMyText(“LabelText”)


这是一个错误的陈述。

要使它在第二种情况下工作,您需要如下所示:

<asp:Label ID="Label1" runat="server" Text="<%# GetMyText("LabelText") %>" />


然后需要对Label1进行数据绑定。

它有单引号和双引号吗?我知道有些语言使单引号内的所有内容都成为纯输出,而双引号内的文本首先计算…@peirix-单引号和双引号对ASP.NET语法没有任何影响。该语法遵循XML语法规则,该规则规定可以互换使用双引号和单引号,只要始终以开头相同的内容结尾。+1是的,使用response。在文本属性中写入没有任何意义。若要展开
语句。。。数据绑定后填写。这意味着除非对控件或其容器调用
DataBind()
,否则不会发生任何事情。如果没有其他原因导致控件上的数据绑定,则可以在
OnLoad
事件中调用
Page.DataBind()
(如Dan所说),但如果控件已经进行了数据绑定,则不必这样做。这是我第一次看到该构造及其解释。有人知道一个好的来源来详细解释所有的构造,它们做什么,什么时候使用它们吗?这正是我想要的答案。解释得很好,而且完整。谢谢。下面是各种服务器标记的说明:
<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />
<asp:Label ID="Label1" runat="server" Text="<%# GetMyText("LabelText") %>" />