在asp.net的自定义类(C#)中怎样把变量输出到页面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在asp.net的自定义类(C#)中怎样把变量输出到页面?相关的知识,希望对你有一定的参考价值。

因为我想知道其中有些变量在运行时候的值,所以想问问这个,在asp.net的自定义类(C#)文件中怎样把变量输出到页面?

参考技术A 可以用 Response.Write(变量名);
进行检查性地输出变量当前的值,例如

int i = 100;
Response.Write(i);
即可。输出结果显示在对应的*.aspx网页的首行,调试完毕后可以直接注释了那句。

P.S. 使用该句法之前记得引用一些命名空间
using System.Web;
using System.Web.UI;等,具体有哪些忘记了,楼主用Visual Studio生成的文件里一般都应该已经包含了。本回答被提问者采纳
参考技术B <%=变量名%>

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

【中文标题】在 ASP.NET 页面上多次重用变量【英文标题】:Reuse a Variable Multiple Times on an ASP.NET Page 【发布时间】:2011-02-09 19:08:16 【问题描述】:

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

company_name.Text = "Acme Windows";

然后

<asp:literal id="company_name" runat="server" />

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

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

【问题讨论】:

其实这是一个很好的问题。 【参考方案1】:

最简单的方法是在您的代码隐藏类中创建一个字符串变量或属性,并使用&lt;%= %&gt; 表示法(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) %>

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

<%: this.CompanyName %>

关于您的原始方法,像 Literal 这样的 ASP.NET Web 控件代表网页的各个部分 - 您不能在一个页面上多次使用它们,因为对象实例 company_name 指的是由您的 .aspx 页面中的 &lt;asp:literal&gt; 生成的 HTML。

【讨论】:

警告:这会使您容易受到 xss 错误的影响。标签控件将清理输出。 ASP.Net 4(上周发布)有一个新的&lt;%: %&gt;bee sting,你应该几乎总是使用而不是&lt;%= %&gt;【参考方案2】:

最简单的答案是您需要定义多个控件。

但更好的解决方案是这样做:

在事物背后的代码上创建一个属性:

protected CompanyNameget;set;

然后,在 aspx 方面,使用 命令引用它

<span><%=CompanyName %></span>

【讨论】:

【参考方案3】:

在这种情况下,您在页面上创建一个属性并将其输出到您需要的每个地方。

public string CompanyName  get  return "Acme Windows";  

在 aspx 中:

.NET 4.0:

<%:this.CompanyName%>

4.0 之前:

<%=this.companyName%>

【讨论】:

【参考方案4】:

您可以动态添加控件:

Literal myLiteral = new Literal();
myLiteral.text = "Acme Windows";
this.Page.Controls.Add(myLiteral);

您还可以在页面上的特定控件中添加控件,方法是将 this.Page.Controls 引用更改为要添加文字的特定控件。

【讨论】:

【参考方案5】:

为什么这是一个社区维基?

无论如何,您有多种可能性来实现您想要的。放置多个具有相同名称的变量肯定不是最佳实践。如果你把它填满,让我们称之为“半动态”值,我不会把它硬编码在你的代码中。我要做的是使用全局资源文件。

您在 App_GlobalResources 文件夹中创建一个新资源文件,并添加一个值为“Acme Windows”的键“COMPANY_NAME”。然后在您的 ASPX 代码中,您可以执行类似的操作

<asp:literal id="company_name" runat="server" Text="<%$ Resources:GlobalResources, Button_Save %>"/>

我写了一个blog post some time ago 详细介绍了这种方法。资源文件的好处就是不用碰代码。

如果您想进一步“重构”,那么 - 假设您有一些必须在页面上不同位置显示的一般公司信息 - 您可以创建一个单独的 UserControl,其中包含公司名称、电话号码、联系信息等信息等等。在那个控件中,你有你的文字,标签,任何你用来精确显示该信息的东西 1 次。然后将此 UserControl 放置在实际页面上您需要它的位置,甚至多次。

【讨论】:

以上是关于在asp.net的自定义类(C#)中怎样把变量输出到页面?的主要内容,如果未能解决你的问题,请参考以下文章

C#和ASP.NET之事件

C# ASP.NET怎么把二进制数据输出到文件?

怎样把java的一个类定义成接口

asp.net(C#)怎样将listview中的radiobutton设置成互斥?

有哪位高手知道ASP.NET中用C#怎样怎样实现文件上传

在会话中存储我的自定义类的 1000 多个实例的列表是不是存在内存问题?