如何在属性字符串中嵌入变量

时间:2016-06-17 08:27:08

标签: c# asp.net

在我的Form.aspx页面中,我在Page_Load中有以下行:

userName = HttpContext.Current.Request.LogonUserIdentity.Name.Split('\\')[1];

我正在使用以下行在表单上设置一些文本:

userLabelSecret.Text = $"Hello {userName}. Please enter a secret word or phrase:";

我想在表单中执行类似的操作:

<asp:Label ID="userLabelSecret" runat="server" Text="Hello <%=userName%>. Please enter a secret word or phrase: "></asp:Label>

但是,这只显示字符串<%=userName%>而不是实际的userName变量。

是否可以将变量嵌入Text属性中,而不是在Page_Load中分配?

我尝试这样做会使用普通的C#连接运算符(+),但这会导致以下错误:

<asp:Label ID="userLabelSecret" runat="server" Text= "Hello " + <%=userName%> + ". Please enter a secret word or phrase: "></asp:Label>

The name 'userLabelSecret' does not exist in the current context

3 个答案:

答案 0 :(得分:1)

不,那是不可能做到的。将代码嵌入标记也不是一种好的做法。

如果那是您想要的路线,以下步骤将为您实现相同的结果。

将userName设为公共属性。然后将asp:标签更改为<label>,并执行以下操作:

<label>Hello <%=userName%>. Please enter a secret word or phrase:</label>

答案 1 :(得分:0)

而不是直接连接&#34; +&#34; asp:Label中的运算符,尝试使用String.Concat

<asp:Label ID="userLabelSecret" runat="server" Text= "<%= String.Concat("Hello ", userName, ". Please enter a secret word or phrase: ") %>"></asp:Label>

或具有类似功能的纯HTML服务器控件,并保留服务器控件的名称:

<label id="userLabelSecret" runat="server">Hello <%= userName %>. Please enter a secret word or phrase:</label>

CMIIW。

答案 2 :(得分:0)

你可以做的是拥有一个string

类型的属性

属性字符串username {get; set;}

属性字符串文本{get; set;} = string.Format(&#34; Hello {0}。请输入一个密码或短语:&#34;,username)

+&#34;。请输入一个密码或短语:&#34;&gt;