在ASP.NET项目中,我有一个文字。为了设置text属性,我使用了以下代码:
<asp:Literal ID="ltUserName" runat="server" Text="<%= session.UserName %>" />
但是文字显示session.UserName
而不是<%= session.UserName %>
的值。我觉得解决方案很简单,但我无法做到。如何使用内联代码设置文本?
答案 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")%>'
来控制数据绑定。