Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用Javascript更新客户端上的TextBox并从服务器读取值_Asp.net_Javascript - Fatal编程技术网

Asp.net 使用Javascript更新客户端上的TextBox并从服务器读取值

Asp.net 使用Javascript更新客户端上的TextBox并从服务器读取值,asp.net,javascript,Asp.net,Javascript,我在客户端使用Javascript更新了一个ASP文本框控件,该控件被呈现为HTML文本框 当我试图访问服务器上textbox控件中的值时,textbox的更新值无法通过textbox服务器控件的普通文本属性访问,这并不奇怪,因为该值的状态,我假设它可能保存在ViewState中,而服务器不知道客户端脚本已经更改了它 是使用以下方法获取更新值的最佳方法: Request.Form(TextBox.UniqueID) 我怀疑,由于文本框是在GridView控件的一行中填充的,并且该行是在执行数据绑

我在客户端使用Javascript更新了一个ASP文本框控件,该控件被呈现为HTML文本框

当我试图访问服务器上textbox控件中的值时,textbox的更新值无法通过textbox服务器控件的普通文本属性访问,这并不奇怪,因为该值的状态,我假设它可能保存在ViewState中,而服务器不知道客户端脚本已经更改了它

是使用以下方法获取更新值的最佳方法:

Request.Form(TextBox.UniqueID)

我怀疑,由于文本框是在GridView控件的一行中填充的,并且该行是在执行数据绑定时在运行时添加的,因此我可能会得到与在设计时在控件上绘制文本框不同的结果

我确认客户输入文本框的值可以通过以下方式访问:

Request.Form( CType(Row.Cells.Item(4).FindControl("txtTotal"), TextBox).UniqueID) 
CType(Row.Cells.Item(4).FindControl("txtTotal"), TextBox).Text
但无法通过以下方式访问:

Request.Form( CType(Row.Cells.Item(4).FindControl("txtTotal"), TextBox).UniqueID) 
CType(Row.Cells.Item(4).FindControl("txtTotal"), TextBox).Text
后者返回一个空字符串

我认为这两句话讲述了整个故事

当你认为文本框返回不同的结果时,它有两个属性来获取文本框的值,甚至更丑。 有没有更好的方法,或者这仅仅是客户端开发的荣耀


当人们说现在的web开发和现在的客户端(如winform)应用程序一样简单,ASP.NET跟踪状态时,我总是感到惊讶。对我来说,web开发总是更加复杂和昂贵,但我承认我在web开发方面没有那么熟练。

看看asp.net,它可能会给你答案,因为你的问题中没有足够的细节

如果您在客户端中通过JS更改文本框值,那么在发回(提交表单)时,应该为您提供新值


正如Josh的评论所指出的,如果在页面加载或其他早期生命周期事件期间绑定或更新控件,则会将其清除。不看代码很难说…

另一种选择是将文本框包装在更新面板中,而不是使用javascript,而是更新其值服务器端。

确保您的控件中有runat=“server”。如果您无法从代码隐藏中访问它,这通常就是问题所在

另外,请确保您没有在其他地方对该文本框执行任何操作,例如在页面加载中,或者在页面上的其他JavaScript中

-编辑-

需要注意的一点是:仅仅因为您可以在Request.form中读取某些内容,并不一定意味着您可以将其作为.net对象读取。form只是读取从表单发送的原始请求信息

您正在尝试读取行中间的文本框。这些行是表的一部分还是其他控件的一部分?包含文本框的控件是否也是同样设置了runat=server的asp.net控件

-另一次编辑-


您在另一个回复中提到,您的文本框位于datagrid中。你在哪里绑定这个网格?在您尝试阅读文本框(如页面加载)之前是否重新绑定了它?如果是,则在读取其值之前将整个网格重置回其原始状态。

否,无论输入是通过键盘还是通过javascript输入,您都应该能够从属性中读取它。我想你的问题在别处。同样,为了解释Aaron“确保在尝试读取值之前没有重置代码隐藏中的值”,我建议您进行调试并检查其值。

您是否将文本框标记为“只读”,然后尝试进行更新


如果
textbox1.ReadOnly=true,服务器将忽略任何更新

您确定在页面加载中没有重置文本框值的内容吗?我可以访问它,它只是不包含Javascript输入的更新值。也许我可以在.NET中关闭某种自动状态维护…嗯,是的,我必须并行方法,UpdatePanel是另一种。尝试权衡。我认为,我填充的文本框位于GridView控件的一行内,并且该行是在执行数据绑定时在运行时添加的,因此我可能会得到与在设计时在控件上绘制文本框不同的结果。我确认客户端放入文本框的值可以通过以下方式访问:Request.Form(CType(Row.Cells.Item(4).FindControl(“txtotal”),textbox.UniqueID),但无法通过以下方式访问:CType(Row.Cells.Item(4).FindControl(“txtotal”),textbox.Text,后者返回一个空字符串。这是一个难以捉摸的小问题。我正在使用jQuery设置
禁用
,甚至该属性也导致值丢失。看来,
readonly
属性是确保返回值的唯一可用属性。傻。