0

我正在尝试在顶部面板上制作“登录信息”,例如“Welcome Back XXX”,所以我使用

<% Response.Write(Session["username"]); %>

在aspx页面内。

它可以工作,但是没有Response.Write这里直接使用变量吗?似乎没有必要。

4

5 回答 5

3

在 ASP.NET 页面语法中有一个简单的“快捷方式”可以将Response.Write.

<%= Session["username"] %>

在功能上等同于

<% Response.Write(Session["username"]); %>

通常,您希望使用 将会话变量编码为 HTML Html.Encode,以防它们包含不在接受的 HTML 范围内的字符。如果您使用的是 ASP.NET 4,则可以使用<%: %>,相当于Response.Write(Html.Encode(string)).

于 2012-04-15T07:48:01.520 回答
1

在您的页面上放置一个 asp.net 标签,例如

<asp:Label id=lblUserName runat="server" />

在您的代码隐藏页面、page_load 事件或适当事件上

lblUserName.Text = String.Format("welcome back {0}",Session["username"]);
于 2012-04-15T07:34:41.647 回答
1

使用标签并为其分配用户名

在 aspx 中(html 代码)

<asp:Label id=lblUserName runat="server" />

在 aspx.cs 中(后面的代码)

lblUserName .Text = "Welcome back"+Session["username"].ToString(); 
于 2012-04-15T07:35:18.663 回答
1

你可以这样做:

<%= Session["username"] %>

如果您使用 ASP.NET 4.0,您可以使用以下语法自动对值进行 HTML 编码:

<%: Session["username"] %>
于 2012-04-15T07:43:08.913 回答
1

正确的方法。

  1. 首先是检查值是否为空
  2. 其次,因为您将它写在页面上,所以使用 HTMLEncode 来确保避免任何类型的注入或问题。

现在,如果您喜欢使用 Literal 或 Label,或者只是直接编写它,这取决于您。如果要将其放在 UpdatePanel 中,则必须使用 Literal。

现在,如果您使用 Literal 避免设置 ViewState 以从中获得空间,那么您需要在 PageLoad 上设置它。它将是

<asp:Literal runat="server" id="txtUserName" EnableViewState="false" />

和页面加载。

if(Session["username"] != null)
{
   Debug.Assert(Session["username"].ToString.Length > 0 , "Check out why I have zero user name");
   txtUserName.Text = Server.HTMLEncode(Session["username"].ToString);
}
于 2012-04-15T07:44:45.510 回答