2014-11-04 46 views
0

我在我的頁面上有一個ASP.net文本框。我正在使用JavaScript設置此文本框的文本屬性。現在,我想從後端訪問這個文本值(使用C#)。但是,每當我嘗試訪問它時,我都會收到舊值(在頁面加載期間設置的值),並且我無法獲取由JavaScript代碼設置的值。 我在這裏錯過了什麼嗎?如何從後面的代碼中讀取由JavaScript設置的文本框文本?

文本框的

ASPX標記 -

<asp:TextBox ID="txtMessage" runat="server"></asp:TextBox> 

的JavaScript編輯這個文本框 -

var txtMessage = document.getElementById("txtMessage"); 
txtMessage.Value = "New Value"; 

C#代碼來訪問文本框中的文本 -

string strMessage = txtMessage.Text; // This does not return value set by above JS function 
+0

'.Value'應該是'.value'。 '.Text'應該是'.text',一開始。 – Andy 2014-11-04 13:34:05

+0

@所以'.Text'是正確的;那部分是服務器端的C#代碼。 – 2014-11-04 13:41:19

+0

我做了這些更改。仍然沒有運氣。該值正在瀏覽器中顯示。但是,在後端,我無法使用文本屬性獲取值。另外,.Text正如Troy Gizzi所提到的那樣正確。 – AshutoshPujari 2014-11-04 13:41:40

回答

1

你只要在JavaScript中更改此行:

txtMessage.value = "New Value"; // the "v" in ".value" needs to be lowercase 

UPDATE:我建立了一個ASP.NET頁面,確保了OP的代碼在一個變化的工作其實沒有,只是爲了確保我沒有錯過任何其他的小錯字。但是,正如Igor在他的評論中指出的那樣,最好使用控件的ClientID屬性來說明.NET運行時可能添加到HTML元素ID的任何前綴。

所以兩條線在JavaScript應該改成這樣(也證實正常工作):

var txtMessage = document.getElementById("<%= txtMessage.ClientID %>"); 
txtMessage.value = "New Value"; 
0

當ASP.Net提供被渲染頁面,控件的名稱被更改預先添加一個標識容納它們的容器的後綴。從JavaScript中,您必須確保通過訪問.ClientID屬性來獲取ASP控件的正確標識。

//gets the element by its ID according to ASP rules 
var txtMessage = document.getElementById("<%=txtMessage.ClientID%>"); 

//the "value" property is lowercase 
txtMessage.value = "New Value"; 
相關問題