在HTML输出中使用的上下文之外的字符串变量

本文关键字:上下文 字符串 变量 HTML 输出 | 更新日期: 2023-09-27 17:58:08

我试图理解为什么变量myUrl在下面的例子中断章取义。处理这种情况的最佳方法是什么?有其他选择吗?代码是ASP.NET页中的C#。

<% string myUrl = "http://www.website.com"; %>
<ul class="footerLinks">
    <li><a href="<%= myUrl %>/index.html">Home</a></li>
</ul>

在HTML输出中使用的上下文之外的字符串变量

这是因为<%=是在脚本组件之前呈现的。如果您在代码隐藏(Page_LoadInit事件)中设置了myUrl,那么它应该如您所期望的那样进入页面。显然,还要删除标记中的变量声明。

首先,您的字符串变量应该在class级别设置为public。

public String myUrl

然后您需要在Page_PreRenderComplete事件中调用DataBind() method

protected void Page_PreRenderComplete(object sender, EventArgs e)
{
    DataBind();
}

因为<%= expressions是在渲染时评估的。