文本框值的更改没有反映在c#后面的代码中

textbox value change not being reflected in code behind c#

本文关键字:代码 文本      更新时间:2023-09-26

我使用的是带有C#的.NET framework 1.1。我的问题描述如下。

  1. 我有服务器端的文本框控件,id为:=txtFromDate。视图状态已启用且为只读
  2. 当页面第一次加载时,我正在上面的文本框中设置当前日期值
  3. 之后,我用jQuery更改了textbox的值
  4. 然后使用带有一些__EVENTTARGET参数的jQuery返回页面
  5. 我在代码隐藏中使用了这个更改后的文本框值

我已经在windows XP机器上用1.1框架开发了32位代码。但现在我已经把整个网站放在了WindowsServer2008R2版本(64位)的.NET2.0应用程序池中

问题:它在开发机器上运行良好。但在windowsserver2008中,jQuery对文本框值的更改并没有反映在代码后面。它保留了我第一次加载页面时指定的旧值。

我想在我的开发机器上运行这个应用程序。简言之,我也想在windows服务器2008的机器上获得代码隐藏中文本框的更改值。

谢谢。

我没有使用txtFromDate.Text,而是使用Request.Form[txtFromData.ClientID]并解决了问题。

除非对输入控件的值进行了更改,否则服务器上的代码后台无法访问您对客户端控件所做的更改。因此,您还可以在javascript/Jquery中使用hiddenfield和要更改的标签,然后将新标签值也存储在hiddenfield中然后,从hiddenfield中读取值,而不是从codebehind中的标签中读取值。

<asp:hiddenfied id="hdnLblValue" runat="server"/>

尽管您可以始终使用set-get方法来存储java脚本中的值。。。但这里有一些简单的方法来解决它…

情况1-如果控制仅用于存储目的,将display:none放在其样式中,并在控件的属性中使visible=true。

情况2-如果要显示控制,但处于禁用模式,则将ReadOnly="true"而不是Enabled=true

例如。。

<asp:textbox runat="server" ID="textbox1" Enabled="false"></asp:textbox> will not work
<asp:textbox runat="server" ID="textbox2" ReadOnly="true"></asp:textbox> will work
clientIDMode="Static" 

将完美工作。

需要牢记

  1. 如果有服务器控件示例:TextBox。从Aspx Page或Code behind禁用或只读。

  2. 它的值正在从JQuery或Javascipt更改。

  3. 你试图从代码后面获得这个控件的更改值,然后你永远不会得到它

  4. 当您发布回该控件时,服务器将验证该属性(如果它是Disabled或ReadOnly,则服务器将不会接受该控件的更改值。

  5. 您需要使用隐藏字段并使用此控件的更改值填充此隐藏字段。

    <asp:HiddenField runat=";服务器";ID=";hdnTextBoxValue"/>

您需要将JQuery或Javascript更改后的值设置为hiddenField,然后从Code-behind获取值