隐藏字段值已更新但未显示代码后面的更新值?

时间:2013-11-21 10:58:30

标签: c# asp.net

我通过JavaScript设置隐藏的字段值,如下所示

 <script lang="JavaScript" type="text/javascript">
 function ChangeVal()
 {
   var elem = document.getElementById("btnDownloadStream");
   if (elem.value == "Start")
   {
     elem.value = "Stop";
     document.getElementById('myHiddenInput').value = "1";
   }
   else
   {
     document.getElementById('myHiddenInput').value = "0";
     elem.value = "Start";
   }
 }

我试图在代码中隐藏字段值。我的代码是

HiddenField myHiddenInput = (HiddenField)Page.FindControl("myHiddenInput");
var val = myHiddenInput.Value;

在此行之前,我正在调用一个创建并生成GetResponseStream()的函数。在执行此操作时,我无法从服务器控件获取值。为什么呢?

6 个答案:

答案 0 :(得分:0)

确保隐藏字段具有runat="server"属性..

答案 1 :(得分:0)

你忘了ViewState。如果使用java脚本代码更改隐藏字段中的数据,则ViewState不会得到此更改,这就是您无法在后面的代码中获取正确值的原因。

答案 2 :(得分:0)

Runat =“server”属性设置为隐藏字段,如下所示:

 <input type="hidden" value="" id="myHiddenInput" runat="server" />

然后更新您的javascript函数,如下所示:

function ChangeVal() {
            var elem = document.getElementById("btnDownloadStream");
            if (elem.value == "Start") {
                elem.value = "Stop";
                document.getElementById('<%=myHiddenInput.ClientID%>').value = "1";
            }
            else {
                document.getElementById('<%=myHiddenInput.ClientID%>').value = "0";
                elem.value = "Start";
            }
        }

现在您可以直接访问代码中的隐藏字段值,而无需使用 Page.FindControl

var val = this.myHiddenInput.Value;

<强>更新

有一件事我注意到你的按钮是服务器端按钮,在你的javascript中你打电话

var elem = document.getElementById("btnDownloadStream");

我认为应该是

var elem = document.getElementById('<%=btnDownloadStream.ClientId%>')

否则您将始终获得 else part

的值

确保不是这种情况。

答案 3 :(得分:0)

因为更改javascript中的值不会影响服务器端值。

如果您想从javascript更改服务器端值:您可以尝试以下

// Javascript
var myHidden = document.getElementById("<%:myHiddenId.ClientId%>");
myHidden.value = myJSVariable;

确保myHidden是服务器控件。

答案 4 :(得分:0)

如果您在页面中使用UpdatePannel,也会发生这种情况。如果是这种情况,请将HiddenField放在UpdatePannel内,然后重试。

答案 5 :(得分:0)

很好@Vishweshwar Kapse回答了你的问题。

将隐藏字段放在更新面板中,不要忘记在触发器中添加按钮的单击事件。