在aspx文件中设置带有内联代码的文本

本文关键字:代码 文本 aspx 文件 设置 | 更新日期: 2023-09-27 18:16:07

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

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

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

在aspx文件中设置带有内联代码的文本

语法=<%#…%>是数据绑定语法,用于在调用DataBind方法时将值绑定到控制属性。

你需要调用DataBind -任一页。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(); 
    }
}

如果您想在HTML页面中打印会话值,只需使用<% =Session["UserName"].ToString()%> as "<% %>将作为服务器标记,并且您不能将其置于文字控件

我的意思是不需要文字控制,可以使用前面提到的编码来代替文字。

你试过了吗:

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

单引号可以解决

编辑:

基于此线程:stackoverflow.com/a/370263/360171

我只需替换

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

<%= session.UserName %>

您不能将控件(<asp:Literal />)与代码块(<%= .. %>)混合。

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

 ltUserName.Text = session.UserName;

Renatos的答案是正确的,当你要计算属性中的表达式时,你应该用单引号。

同样可以用ItemTemplate说,在那里你有控制数据绑定,在那里你会使用Text='<%=Eval("MyDataProperty")%>'