2016-06-17 81 views
0

在我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

+1

你是否已經改變標籤ID從'userSecretLabel'到'userLabelSecret'?如果您不確定,請在.cs文件後重構設計器和代碼以匹配aspx頁中的標籤ID。 –

+0

@TetsuyaYamamoto對不起,這是一個錯字!我唯一的標籤是'userLabelSecret' – Bassie

回答

1

不,不能這樣做。在代碼中嵌入代碼也不是一個好習慣。

如果多數民衆贊成你想採取的路線,下面的步驟將取得同樣的結果給你。

將userName設爲公共屬性。然後,更改ASP:標籤只是<label>,做一些事情,如:

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

謝謝 - 如果在html中嵌入代碼被認爲是不好的做法,我會選擇使用'Label.Text =「texthere」;'來更改它。 – Bassie

0

而是由內而外的ASP 「+」 操作符直接串聯組成:標籤,儘量使用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。

0

你可以做的是有類型的字符串

屬性字符串的用戶名的一個屬性{獲得;設置;}

屬性字符串文本{獲取;集;} =的String.Format(「你好{ 0}請輸入一個祕密的單詞或短語:「用戶名)

+」請輸入一個祕密的單詞或短語:「>

相關問題