我有一个 .aspx 页面设置。我有很多占位符需要更换。名字,姓氏,城市,州等。我如何以有效的方式进行此操作?
丢一堆...
<asp:Label runat="server" id="Label_FirstName" Text="" />
...到处?
或者有没有办法在普通页面区域使用数据绑定语法:
<% FirstName %>
提前致谢!
我有一个 .aspx 页面设置。我有很多占位符需要更换。名字,姓氏,城市,州等。我如何以有效的方式进行此操作?
丢一堆...
<asp:Label runat="server" id="Label_FirstName" Text="" />
...到处?
或者有没有办法在普通页面区域使用数据绑定语法:
<% FirstName %>
提前致谢!
注意
<asp:Label runat="server" id="Label_FirstName" Text="" />
将转义您的字符串(例如,将 < 和 > 替换为 < 和 >),但是
<%= FirstName %>
将不会。如果这是您的意图,那很好,但请注意,您可能会为XSS 攻击打开通道。为了正确地转义你的字符串,你可能想要
<%= System.Web.HttpUtility.HtmlEncode(FirstName) %>
反而。
你当然可以使用:
<%= FirstName %>
其中 FirstName 是页面的属性。它不一定是类中的属性,您可以从该行访问几乎任何内容。
更新:正如 DrJokepu 指出的,如果您显示的数据来自用户输入,那么它会打开一个 XSS 漏洞。正如所指出的,您使用 HtmlEncode 来避免这种情况,在这种情况下,更短的语法将是:
<%= Server.HtmlEncode(FirstName) %>
如果你有一个基本页面,你可以定义一个方法并摆脱:
<%= HtmlEncode(FirstName) %>
如果您使用 asp.net 标签,请在适当的地方执行 EnableViewState = false,这样您就可以避免发送/接收不必要的视图状态。
对于格式化使用 ids/css 类,并在 css 样式表中具有样式。无论内容是否动态,css都可以被浏览器缓存。
对于信息列表,您可以使用 ListView 或 Repeaters 并仍然控制将通过网络发送的特定 html。
您绝对可以使用 ASP 样式的标签 ( <%= %>
),但我认为您的第一种方法更清洁且更易于维护。当您使用 ASP 风格的标签时,您不会进行数据绑定,而是可以访问页面的所有成员(包括字段、属性和其他方法)。
FirstName
因此,如果是您正在处理的页面上的字段或属性,这两种方法都将起作用。我个人发现基于控制的方法更好,但每个人都有自己的想法。
我喜欢使用标签,因为它更容易混淆颜色、字体、粗体等...以显示错误或吸引用户注意某些文本。
我通常在代码隐藏中只有一个设置方法。
if(!Page.IsPostBack)
SetupForm();
SetupForm()
{
Label_FirstName.Text = firstName;
}
如果您想对 HTML 进行更多控制,可以使用一堆标签或替换控件,甚至是文字文本。
您可以在标记中使用代码,例如:
<%=this.FirstName%>
这将导致在您的页面上调用名为 FirstName 的属性,并将其返回值放置在标签之间。
这取决于您将使用它们的上下文。通常使用 asp:label 控件很好,因为您可以从页面上的代码隐藏中访问它们。数据绑定方法通常在数据绑定控件(如 DataGrid 或 Repeater)中使用。
数据绑定方法的真正问题是 IDE 对此没有很好的支持。为了让它工作,你必须在你的页面类上有一个属性,你需要在后面的代码中填充它,但是如果属性名称发生变化,你还必须确保更新你的 aspx 页面。如果您使用标签方法,IDE 将检测标签名称是否发生变化,或者它是否已被完全删除并给您一个编译时错误。
或者,您可以使用 jQuery 填充您的数据,并使用 spans 作为您的占位符。请注意,jQuery 需要一些不同的方式来考虑您的页面,因为它使用 javascript 来填充您的字段。
Jeff Atwood 在Coding Horror中探索了这个主题,发现性能并不重要......
注意:似乎杰夫的帖子必须用一粒盐来处理,毕竟......很抱歉在没有阅读评论的情况下匆忙回答
试试这个:
<%= FirstName %>