在ASP.NET项目中,我有一个文字。为了设置文本属性,我用下面的代码:用aspx文件中的内联代码设置字面文本
<asp:Literal ID="ltUserName" runat="server" Text="<%= session.UserName %>" />
但是,相反的session.UserName
值,文字显示<%= session.UserName %>
。我觉得这个解决方案很简单,但我做不到。如何使用内联代码设置文本?
在ASP.NET项目中,我有一个文字。为了设置文本属性,我用下面的代码:用aspx文件中的内联代码设置字面文本
<asp:Literal ID="ltUserName" runat="server" Text="<%= session.UserName %>" />
但是,相反的session.UserName
值,文字显示<%= session.UserName %>
。我觉得这个解决方案很简单,但我做不到。如何使用内联代码设置文本?
如果你真的想打印在HTML页面中的会话值只使用 <%=会议[“用户名”]。的ToString()%>为“<%%>将作为服务器的标签,你不能放弃它的字面控制内部
我的意思是没有必要立即控制可以只使用所提编码的文字代替。
谢谢,删除文字解决了这个问题。 'Hello <%= session.UserName.ToString()%>'很好。 – sevenkul
@sevenkul如果UserName是一个字符串,则不需要额外的'.ToString()'。 – NoLifeKing
你有没有尝试过:
Text='<%= session.UserName %>'
单引号可以解决这个问题
编辑:
在此基础上螺纹:stackoverflow.com/a/370263/360171
我会简单地替换
<asp:Literal ID="ltUserName" runat="server" Text="<%= session.UserName %>" />
通过
<%= session.UserName %>
它仍然打印<%= session.UserName%>。 – sevenkul
如果您遇到困难,为什么不在代码后面执行'ltUserName.Text = session.UserName'?我在这里没有问题,btw – renatoargh
我正在使用'ltUserName.Text = session.UserName',它工作正常,但我想保持清洁我的代码隐藏。我想我觉得你很难过。 – sevenkul
Renatos答案是正确的,你应该把单引号时,你要评估一个属性的表达式。
与ItemTemplate
一样,您可以在其中控制数据绑定,您将使用Text='<%=Eval("MyDataProperty")%>'
。
语法= <%#...%>是用于结合值来控制数据绑定语法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();
}
}
不能混合控件(<asp:Literal />
)与代码块(<%= .. %>
)。
您可以从内部代码访问Text属性:
ltUserName.Text = session.UserName;
会议是我的类名。 – sevenkul
检查答案︰http://stackoverflow.com/a/370263/360171 –
所以我犯了一个错误,选择'<%= %>'。但我也无法用'<%# %>'来做。我无法找到在aspx文件中使用内联代码设置文字文本的正确方法。 – sevenkul