2012-03-22 54 views
6

Possible Duplicate:
Why <%= %> works in one situation but not in anotherASP.NET - 傳遞一個C#變量爲HTML

我試圖通過在C#中的HTML聲明的變量。這些變量在代碼隱藏中都被聲明爲公共的。

這是我使用的HTML代碼:

<asp:TextBox ID="TextBoxChildID" Text='<%= Child_ID %>' runat="server" Enabled="false"></asp:TextBox> 

的問題是,在頁面加載時,文本「<%= Child_ID%>」出現在變量的文本框,而不是價值。

請問有什麼不對?

+0

** http://msdn.microsoft.com/en-us/library/6dwsdcf5%28VS.71%29.aspx** – 2012-03-22 16:52:58

回答

7

所有這一切都假設這只是您的頁面上的某個文本框,而不是DataBound控件。如果文本框是中繼器中的itemTemplate的一部分,並且Child_ID與數據行不同,則所有這些都不正確。

而是執行此操作:

<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"><%= Child_ID %></asp:TextBox> 

總之,你犯同樣的錯誤,我做的時候我問這個問題:Why <%= %> works in one situation but not in another


另外,在代碼隱藏,你可以在你的ASPX裏有這個:

<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"></asp:TextBox> 

這個在你的代碼背後:

TextBoxChildID.Text = Child_ID; 
+0

我試過你的建議。然而,現在似乎沒有什麼東西出現在文本框中:s – Matthew 2012-03-22 16:47:29

+0

對不起,我自己錯了。在這種情況下,<%# %>也不起作用。它應該是現在。如果是這樣,請對我的問題答案進行投票 - 這個人做了很好的解釋,他值得得分。並查看關於該答案的註釋 - 這裏有一些有用的類似表達式的鏈接。 – David 2012-03-22 16:50:27

+0

這是給我的錯誤:代碼塊不支持在這方面 – Matthew 2012-03-22 16:51:09

1

該變量必須首先公開。和:

'<%# Child_ID %>' 
+0

我很確定它只需要保護。 – 2012-03-22 16:50:00

+0

好的做法是將正確的值傳遞給HTML,而不是將變量傳遞給HTML。由於有一個直接繼承保護變量也可以工作。 – 2012-03-22 17:16:50

1
<script type="text/javascript"> 
    function abc() 
    { 
     var id = document.getElementById('txtTextBox'); 
     id.value=<%=MyProperty %>; 
     alert(id.value); 
    } 
</script> 

protected int MyProperty 
{ 
    get 
    { 
     return 1; 
    } 
} 

Page.RegisterStartupScript(Guid.NewGuid().ToString(), 
"<script language = 'javascript'>abc();</script>"); 
0

在HTML:

<asp:HiddenField ID="HiddenField1" runat="server" /> 

在代碼隱藏:

protected void Page_Load(object sender, EventArgs e) 
{ 
    HiddenField1.Value = Child_ID; 
} 

這將是最好的方式,它創建一個隱藏的輸入值。