【发布时间】:2014-01-24 16:31:54
【问题描述】:
我有一个javascript函数如下:
Dim s As New StringBuilder
s.Append("<script type=""text/javaScript"">")
s.Append("var result = new Object();" & ControlChars.CrLf)
s.Append("if (window.returnValue == 'undefined') { window.returnValue = ''; }" & ControlChars.CrLf)
s.Append("function ReturnClaimCode(id) { " & ControlChars.CrLf)
s.Append("document.getElementById('" & txtClaimSelected.UniqueID & "').value=id;" & ControlChars.CrLf)
s.Append("document.getElementById('" & btnAllocate.UniqueID & "').disabled = false;" & ControlChars.CrLf)
s.Append("}" & ControlChars.CrLf)
s.Append("</script>")
If Not ClientScript.IsClientScriptBlockRegistered("ReturnClaimCodeJs") Then
ClientScript.RegisterClientScriptBlock(Me.GetType(), "ReturnClaimCodeJs", s.ToString())
End If
这在执行时将文本框“txtClaimSelected”的值设置为 ID,可以是“1”、“2”、“3”等。这可以正常工作。我的问题是当我点击表单上的一个按钮时(通过这个javascript将ID值放入文本框之后),通过
获得的值Dim valueoftextbox = txtClaimSelected.Text
不是我在文本框中看到的值。它是运行 javascript 之前的默认值(即单词“None”)。如何“存储”这个值或让我的代码看到文本框的更新内容?
我尝试通过 javascript 强制回发
s.Append("__doPostBack('','');" & ControlChars.CrLf)
这确实会导致回发,但值总是会再次丢失。
请帮忙。 谢谢
【问题讨论】:
-
看起来像一个 ViewState 问题。 Web 窗体为每个输入创建一个隐藏字段以保存视图状态。也许您是从隐藏输入而不是文本框中获取值。尝试在文本框中添加 EnableViewState="false" 并再次测试!
标签: javascript asp.net vb.net postback