2011-11-30 57 views
4

在ASP.NET项目中,我有一个文字。为了设置文本属性,我用下面的代码:用aspx文件中的内联代码设置字面文本

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

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

+0

会议是我的类名。 – sevenkul

+0

检查答案︰http://stackoverflow.com/a/370263/360171 –

+0

所以我犯了一个错误,选择'<%= %>'。但我也无法用'<%# %>'来做。我无法找到在aspx文件中使用内联代码设置文字文本的正确方法。 – sevenkul

回答

5

如果你真的想打印在HTML页面中的会话值只使用 <%=会议[“用户名”]。的ToString()%>为“<%%>将作为服务器的标签,你不能放弃它的字面控制内部

我的意思是没有必要立即控制可以只使用所提编码的文字代替。

+0

谢谢,删除文字解决了这个问题。 'Hello <%= session.UserName.ToString()%>'很好。 – sevenkul

+2

@sevenkul如果UserName是一个字符串,则不需要额外的'.ToString()'。 – NoLifeKing

3

你有没有尝试过:

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

单引号可以解决这个问题

编辑:

在此基础上螺纹:stackoverflow.com/a/370263/360171

我会简单地替换

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

通过

<%= session.UserName %> 
+0

它仍然打印<%= session.UserName%>。 – sevenkul

+0

如果您遇到困难,为什么不在代码后面执行'ltUserName.Text = session.UserName'?我在这里没有问题,btw – renatoargh

+0

我正在使用'ltUserName.Text = session.UserName',它工作正常,但我想保持清洁我的代码隐藏。我想我觉得你很难过。 – sevenkul

0

Renatos答案是正确的,你应该把单引号时,你要评估一个属性的表达式。

ItemTemplate一样,您可以在其中控制数据绑定,您将使用Text='<%=Eval("MyDataProperty")%>'

6

语法= <%#...%>是用于结合值来控制数据绑定语法DataBind方法被调用时的属性。

You nee d调用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

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

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

ltUserName.Text = session.UserName; 
相关问题