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