如何从代码后面读取JavaScript设置的文本框文本

本文关键字:文本 JavaScript 设置 读取 代码 | 更新日期: 2023-09-27 18:29:14

我的页面上有一个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

如何从代码后面读取JavaScript设置的文本框文本

您只需要在JavaScript:中更改这一行

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

更新:我设置了一个ASP.NET页面,以确保OP的代码确实能处理这一更改,只是为了确保我没有遗漏任何其他的小错误。然而,正如Igor在评论中指出的那样,使用控件的ClientID属性来说明.NET运行时可能添加到HTML元素的id中的任何前缀是一种很好的做法。

因此,JavaScript中的两行应该改为这样(也被确认可以正确工作):

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

当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";