我通过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()
的函数。在执行此操作时,我无法从服务器控件获取值。为什么呢?
答案 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)
将隐藏字段放在更新面板中,不要忘记在触发器中添加按钮的单击事件。