在这个场景中,我希望单个页面根据会话变量显示不同的内容。问题是,我能想到的使用代码隐藏方法的唯一解决方案是隐藏显示内容的div,但我无法帮助但感觉它不安全。我想到的另一种方法是像在PHP中一样在标记中包含代码,例如
<% if (Session["variable"].ToString() == "food") { %>
//Markup
<% } %>
那么您认为隐藏div并不存在安全风险,或者是否有更好的方法可以使用代码隐藏来动态更改内容?
答案 0 :(得分:3)
安全问题在很大程度上取决于方式 会话[“变量”] 已设定。
但是控件设置为runat =“server”和 可见= FALSE; 甚至没有呈现给客户端,所以我认为这种方法没有问题。
答案 1 :(得分:1)
在asp.net中,有各种控件可用于根据不同的变量显示不同的内容。
对于您的解决方案,您可以使用<asp:PlaceHolder />
控件。这将允许您将HTML标记和其他控件插入其中,然后在您可以显示/隐藏的代码中,具体取决于您的变量。
所以.aspx页面上的标记会是;
<asp:PlaceHolder runat="server" id="phOne" visible="false">
<p>Show Me if condition is met</p>
</asp:PlaceHolder>
然后在你的代码后面你可以显示/隐藏;
this.phOne.visible = Session["variable"].ToString() == "food";
我会确保默认情况下它不可见visible="false"
然后显示在代码中。如果控件不可见,那么它根本不会在页面上呈现,因此没有安全风险。
另一个是<asp:Panel />
,它在页面上呈现为<div />
。这将与占位符
答案 2 :(得分:-1)
也许你想使用Server.Transfer。在此处查看更多相关信息:Server.Transfer Vs. Response.Redirect。
当然,您也可以简单地设置代码隐藏的内容:
<p id="a" runat="server">
abc
</p>
和
a.InnerHtml = "def";