我的页面上有一个ASP.net文本框。我正在使用JavaScript设置此文本框的文本属性。现在,我想从后端访问此文本值(使用C#)。但是,每当我尝试访问它时,我都会获得旧值(在页面加载期间设置的值),并且我无法获取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 :(得分:1)
您只需在JavaScript中更改此行:
txtMessage.value = "New Value"; // the "v" in ".value" needs to be lowercase
更新:我设置了一个ASP.NET页面,以确保OP代码实际上可以使用这一个更改,只是为了确保我没有错过任何其他小错字。但是,正如Igor在他的评论中指出的那样,使用控件的ClientID
属性来解释.NET运行时可能添加到HTML元素的任何前缀是一个好习惯。 s id。
因此,JavaScript中的两行应更改为此(也已确认可正常工作):
var txtMessage = document.getElementById("<%= txtMessage.ClientID %>");
txtMessage.value = "New Value";
答案 1 :(得分:0)
当ASP.Net提供要呈现的页面时,控件的名称会通过添加一个后缀来更改,该后缀标识容纳它们的容器。从JavaScript,您必须通过访问.ClientID
属性来确保获得正确的ASP控件ID。
//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";