在 MVC 的回发中保留 hiddenField 值

Posted

技术标签:

【中文标题】在 MVC 的回发中保留 hiddenField 值【英文标题】:Keep hiddenField value on postback in MVC 【发布时间】:2015-08-11 07:40:26 【问题描述】:

我在_layout 文件中有隐藏字段。当用户登录时,我正在检查数据库中的值。如果是真的向用户弹出一个对话框。如果用户关闭对话框,我将不会显示他注销的消息框。所以我就是这样做的。

_布局

@html.Hidden("BadAddressWarning","")

layout.js

    $(function () 
        if ($("#BadAddressWarning").val() == "") 
        $.ajax(
            url: '../Address/CheckPrimaryAddressGood',
            type: "Get",
            ....
           success: function(data) 
            if (data != "")                 
            $("#dialogCheckAddress").dialog(
                  ...
            );
            $("#dialogCheckAddress").dialog("open");
            $("#dialogCheckAddress").on("dialogbeforeclose", function(event, ui) 
                   $("#BadAddressWarning").val("false");
            );
            

            ,
            failure: function(errMsg) 
                alert(errMsg);
            
        );
    
);

如果我回帖。我输了$("#BadAddressWarning").val()。我想保留那个值。

【问题讨论】:

在强制性的“MVC 中没有回发”之外,隐藏字段需要位于表单标签内,才能成为 POST 集合的一部分。将它保存在 POST 集合中允许您将值发送回新视图。从您描述的声音来看,它没有包含在您的表单标签内。您可以使用 javascript 将此值复制到提交时表单中的实际隐藏表单字段中。或选项 2,当您需要保留请求之间的值时,将其放在会话或 cookie 中。 【参考方案1】:

您明确地传递了一个空字符串作为值。相反,请执行以下操作:

@Html.Hidden("BadAddressWarning", Request["BadAddressWarning"])

甚至更简单:

@Html.Hidden("BadAddressWarning")

【讨论】:

以上是关于在 MVC 的回发中保留 hiddenField 值的主要内容,如果未能解决你的问题,请参考以下文章

在 GridView 中触发值更改的回发

Google 应用内付款:如何处理 Google 的回发 JWT

UpdatePanel 中的复选框列表在选中项目时触发完整的回发

asp.net:无效的回发或回调参数

无效的回发或回调参数/无效的视图状态

为啥任何 html 按钮都会导致 aspx 页面中的回发?