有没有办法在没有“Response.Write”的情况下将文本插入页面?

时间:2012-04-15 07:29:12

标签: asp.net

我正在尝试在顶部面板上创建“登录信息”,例如“欢迎回来XXX”,所以我使用

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

在aspx页面内。

它有效,但无论如何在没有Response.Write的情况下直接使用变量?这似乎没必要。

5 个答案:

答案 0 :(得分:3)

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

<%= Session["username"] %>

在功能上等同于

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

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

答案 1 :(得分:1)

在您的网页上添加一个asp.net标签,例如

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

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

lblUserName.Text = String.Format("welcome back {0}",Session["username"]);

答案 2 :(得分:1)

使用标签并为其指定用户名

在aspx(html代码)

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

在aspx.cs中(代码隐藏)

lblUserName .Text = "Welcome back"+Session["username"].ToString(); 

答案 3 :(得分:1)

你可以这样做:

<%= Session["username"] %>

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

<%: Session["username"] %>

答案 4 :(得分:1)

正确的方法。

  1. 首先检查值是否为空
  2. 其次,因为您在页面上书写它,使用HTMLEncode以确保您避免任何类型的注入或问题。
  3. 现在,如果你想使用文字或标签,或者只是直接写它,那取决于你。如果要将其放在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);
    }