使用Javascript更改HiddenField值在C#代码绑定中没有更改

本文关键字:绑定 代码 更改 Javascript HiddenField 值在 使用 | 更新日期: 2023-09-27 18:26:26

我试图用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之间传递信息?

使用Javascript更改HiddenField值在C#代码绑定中没有更改

您可能需要注意HiddenField的客户端ClientID,然后在回发期间查看Request.Form集合服务器端的相应值。

通过这种方式,您将检查发送到服务器的值。如果该值正确,则问题可能是由于某些内容干扰了ProcessPostData(例如手动重置或动态更改组织形式)

尽管没有完整的代码很难给出建议,但我同意那些认为EnableViewState=false令人惊讶的说法。

查看HiddenField:的MS文档中的示例

Form1.HiddenField1.value = s.val();

本页底部-http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx

尝试使用html隐藏变量执行相同的任务

 <input id="hdName" runat="server" type="hidden" />

由于我们提供了runat="server",我们将能够在服务器端和hdName上访问此变量。Value我们可以在服务器端获得该值。虽然这是html控件,但我们需要在javascript中提供hdName.ClientID,就像我们给出的runat=server一样。

document.getElementById('<%= hdName.ClientID %>').value 

希望这能解决你的问题,给你想要的结果。感谢

尽管您可以始终使用set-get方法来存储java脚本中的值。。。但这里有一些简单的方法来解决它…

情况1-如果控制仅用于存储,
展示:没有任何风格和制作在控件的属性中可见=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

将HiddenField放入UpdatePanel中,并使用具有ClientID的HiddenField。

我的答案与其他人所说的类似,即获得一个隐藏的变量/控件,该变量/控件可以传递回服务器端代码隐藏,如按钮事件或页面加载等。我从他们那里得到了这个想法。但现在是:

<asp:TextBox ID="hdnErrorMsg" ClientIDMode="Static" style="display: none;" runat="server"/>

这可以在JavaScript中设置,它将返回到服务器端Asp.NET并被使用和检查。如果你想在它返回客户端时保留它,你可能必须把它和所有其他你需要的东西放回。在我的情况下,这是一条错误消息。我希望它在保存和退出的ASP.NET按钮单击事件中停止,但我需要将错误内容放回,这样当它返回到客户端时,它就会再次出现。