在ASP.NET页面上重复使用多次变量

mac*_*osh 8 asp.net templates reusability

问这么简单的问题我觉得有些愚蠢,但我似乎无法找到答案.我是ASP.NET(C#)的新手,但我正在学习构建一组显示报告的简单网页.我有一个代表公司名称的变量.我需要在网页上的多个位置输出此变量.我发现输出变量的唯一方法是:

company_name.Text = "Acme Windows";
Run Code Online (Sandbox Code Playgroud)

然后

<asp:literal id="company_name" runat="server" />
Run Code Online (Sandbox Code Playgroud)

我的问题是我想在页面的多个地方使用company_name.我是否真的必须创建一个单独的变量,每次在页面上放置相同的值?如果我只是将上面的XML代码复制到我想要显示变量的所有位置,那么它显然会产生编译错误,因为已经定义了该ID.

我觉得我错过了一些非常明显的东西.

Jef*_*nal 11

最简单的方法是在代码隐藏类中创建一个字符串变量或属性,并使用<%= %>符号(short for Response.Write)在页面内联中呈现它:

// You can do this anywhere on your .aspx, as many times as you like.
<%= this.CompanyName %>

// Better yet, html encode the value to protect against various threats,
// such as cross-site script injection (XSS)
<%= HttpUtility.HtmlEncode(this.CompanyName) %>
Run Code Online (Sandbox Code Playgroud)

.NET 4.0引入了一种新的快捷方式符号(Html编码块)来对输出进行html编码:

<%: this.CompanyName %>
Run Code Online (Sandbox Code Playgroud)

关于您的原始方法,ASP.NET Web控件Literal代表网页的各个部分 - 您不能在页面上多次使用它们,因为对象实例company_name引用<asp:literal>.aspx页面中生成的HTML的特定部分.

  • 警告:这会让您对xss错误开放.标签控件将清理输出.ASP.Net 4(上周出来)有一个新的`<%:%>`蜜蜂刺痛你应该几乎总是使用而不是`<%=%> (4认同)