asp.net – 为什么<%=%>在一种情况下工作,但在另一种情况下工作

前端之家收集整理的这篇文章主要介绍了asp.net – 为什么<%=%>在一种情况下工作,但在另一种情况下工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是因为昨天晚上给我一个坏的答案。对于为什么一种方法工作而不是另一种方法的好奇心是扰乱我,我希望比我更聪明的人可以给我正确的解释(或指向我的文档)为什么以下行为是这样的。

给出以下代码隐藏:

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") %>' />

编辑 – 添加

有可能让我原来的愚蠢的答案下降了更多次,这里是原始问题的链接,因为我现在得到的一些答案已经在这个问题被覆盖。

Why can’t I set the asp:Label Text property by calling a method in the aspx file?

解决方法

使用<%=%>等于在您的页面中放置Response.Write(“”)。这样做时
<asp:Label ID="Label1" runat="server"><%= GetMyText("LabelText") %></asp:Label>

ASP.NET处理器评估控件,然后在渲染时输出控件的内容&调用Response.Write它看到的位置<%=。 在这个例子中:

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

您不能在Text属性上使用Response.Write(“”),因为它不返回字符串。它将其输出写入响应缓冲区并返回void。

如果要在ASP.NET标记中使用服务器标签语法,则需要使用<%#%&gt ;.标记数据的这种组合绑定了标签中的值。为了使这个工作,你需要在页面的Load()方法调用DataBind()来使它工作。

猜你在找的asp.Net相关文章