我正在尝试使用javascript更改隐藏字段,然后在我的代码隐藏中使用该更改的值。我在Page_Load中有一个断点来检查HiddenField1的值是否已经改变但是在回发时它总是保持为0。
<script type="text/javascript">
$(document).ready(function () {
var hiddenControl = '<%= HiddenField1.ClientID %>';
var s = $('#cbox');
$("#cbox").combobox({
selected: function (event, ui) {
alert(s.val());
document.getElementById(hiddenControl).value = s.val();
alert(document.getElementById(hiddenControl).value);
}
});
});
<asp:HiddenField ID="HiddenField1" runat="server" EnableViewState="False" Value="0" />
如果我无法使用此功能,是否还有其他方法可以在javascript和c#codebehind之间传递信息?
答案 0 :(得分:1)
您可能需要注意HiddenField的客户端ClientID,然后在回发期间查看Request.Form集合服务器端的相应值。
这样您将检查发送到服务器的值。 如果值正确,则可能会出现问题,因为有些东西会扰乱ProcessPostData (例如,手动重置或动态更改表单组织)
虽然很难在没有完整代码的情况下提出建议,但我同意那些说EnableViewState = false令人惊讶的建议。
答案 1 :(得分:0)
查看HiddenField的MS文档中的示例:
Form1.HiddenField1.value = s.val();
本页底部 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx
答案 2 :(得分:0)
尝试使用html隐藏变量
执行相同的任务 <input id="hdName" runat="server" type="hidden" />
由于我们提供了runat =“server”,我们将能够在服务器端和hdName.Value上访问此变量,我们可以在服务器端获取该值。认为这是html控件我们需要在javascript中提供hdName.ClientID,因为我们已经给出了runat = server。
document.getElementById('<%= hdName.ClientID %>').value
希望这可以解决您的问题并为您提供所需的结果。 感谢
答案 3 :(得分:0)
虽然你总是可以使用set get方法存储java脚本中的值... 但这里有一些简单的解决方法......
案例1 - 如果控制仅用于存储目的,
把display:none放在它的风格和制作中
在控件的属性中visible = true。
案例2 - 如果要显示控件但在禁用模式下,则将ReadOnly =“true”而不是
eg..
<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
答案 4 :(得分:0)
将您的HiddenField放在UpdatePanel中,并将HiddenField与ClientID一起使用。
答案 5 :(得分:0)
我的回答类似于其他人所说的获取隐藏变量/控件,可以将其传递回服务器端代码,如Button事件或Page_Load等。我从他们那里得到了这个想法。但这是:
<asp:TextBox ID="hdnErrorMsg" ClientIDMode="Static" style="display: none;" runat="server"/>
这可以在JavaScript中设置,它将返回到Server Side Asp.NET并被使用和检查。如果你想在它回到客户端时保留它,你可能不得不把它和你需要的所有其他东西放回去。在我的情况下,这是一个错误消息。我希望它停止在ASP.NET按钮单击事件中进行保存并退出,但是我需要将错误内容放回去,以便当它返回到客户端时它会再次出现。