2012-01-12 76 views
0

這是我的代碼:asp.net:使用JavaScript設置拉布勒值,但它不保存

<form id="form1" runat="server"> 
<div> 
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    <input type="button" onclick="ontextchange();" /> 

    <asp:Button ID="Button1" runat="server" 
     Text="Button" onclick="Button1_Click" /> 
</div> 


function ontextchange() { 

     document.getElementById("Label1").innerText="New"; 

    } 

的問題是:我可以改變通過JavaScript的標籤值,但當我點擊Button1時,標籤值成爲第一個「標籤」。當我點擊asp.net按鈕時,如何獲得新值?

+1

你不能。當你點擊按鈕時,它會將表單發送到服務器,服務器提供一個新的HTML頁面。標籤不會發布。如果您想將其發佈到服務器,您需要將該值存儲在輸入字段中。 – 2012-01-12 07:57:11

回答

3

您可以嘗試使用隱藏字段,但需要保持它們在客戶端腳本和服務器端事件處理程序中保持同步。

<asp:Hidden ID="Hidden1" runat="server" /> 
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 

在JavaScript:

function ontextchange() { 
    // Set the label for the visual result 
    document.getElementById("Label1").innerText="New"; 
    // Set the hidden input for the server 
    document.getElementById("Hidden1").value="New"; 
} 

服務器端可以讀出隱藏的輸入和更新標籤(再次,使它們保持同步):

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // Set the label text to the value from the hidden input 
    string value = Hidden1.Value; 
    Label1.Text = value; 
} 
+0

感謝@michielvoo它的工作原理。 – nixjojo 2012-01-12 09:15:36