在aspx文件中使用内联代码设置文字文本

时间:2011-11-30 11:51:34

标签: c# asp.net

在ASP.NET项目中,我有一个文字。为了设置text属性,我使用了以下代码:

<asp:Literal ID="ltUserName" runat="server" Text="<%= session.UserName %>" />

但是文字显示session.UserName而不是<%= session.UserName %>的值。我觉得解决方案很简单,但我无法做到。如何使用内联代码设置文本?

5 个答案:

答案 0 :(得分:7)

语法=&lt;%#...%&gt;是数据绑定语法,用于在调用DataBind方法时将值绑定到控件属性。

您需要调用DataBind - Page.DataBind绑定页面上的所有控件,或者this.DataBind()仅绑定标签。例如。将以下内容添加到Page_Load事件处理程序:

<asp:Literal ID="ltUserName" runat="server"  Text='<%# Session["UserName"]%>'></asp:Literal>


 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Session["UserName"] = "Sample";
        this.DataBind(); 
    }

}

答案 1 :(得分:5)

如果您确实想在HTML页面中打印会话值,请使用     &lt;%= Session [“UserName”]。ToString()%&gt; as“&lt; %%&gt;将作为服务器标记,你不能在文字控件中提供

我的意思是不需要Literal Control就可以使用提到的编码而不是文字。

答案 2 :(得分:3)

你有没有尝试过:

Text='<%= session.UserName %>'

单引号可以解决它

修改

基于此主题:stackoverflow.com/a/370263/360171

我会简单地替换

<asp:Literal ID="ltUserName" runat="server" Text="<%= session.UserName %>" />

通过

<%= session.UserName %>

答案 3 :(得分:1)

您无法将控件(<asp:Literal />)与代码块(<%= .. %>)混合使用。

您可以从代码中访问Text属性:

 ltUserName.Text = session.UserName;

答案 4 :(得分:0)

Renatos答案是正确的,当您要评估属性中的表达式时,应该使用单引号。

ItemTemplate也可以这样说,你可以使用Text='<%=Eval("MyDataProperty")%>'来控制数据绑定。