用FormMethod发回.Post使用模态

本文关键字:模态 发回 FormMethod Post | 更新日期: 2023-09-27 18:15:30

我有一个jQuery数据表,它有一些自定义按钮,当点击一个引导模式被调用。模态询问用户是否想要停用一个帐户。

在我的example2 Datatable中,当单击按钮时,我将帐户的唯一标识符(pid)传递给模态:

    $('#example2').on('click', 'tr', function () {
        var oData = oTable.fnGetData(this);
        var pid = oData[0];
        $(".modal-footer #pid").val(pid);
        //alert(pid);
    });

我面临的问题是试图张贴回我的控制器使用下面的形式方法在模态,我怎么能使这个工作:

模态:

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Warning!</h4>
            </div>
            <div class="modal-body">
                <p>Are you sure you want to deactivate this account?</p>
            </div>
            <div class="modal-footer">
                @using (@Html.BeginForm("ProviderActivate", "AdminPanel", FormMethod.Post))
                {
                    <input type="hidden" name="pid" id="pid" value="pid" />
                        <input type="submit" value="Publish" class="btn btn-default" data-dismiss="modal" />
                }
                @*<button type="button" class="btn btn-default" data-dismiss="modal">Ok</button>*@
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

目前上面的模态根本不起作用。我点击模式内的停用(Publish)按钮,没有任何东西被张贴回控制器,没有帐户被停用/激活。如果我在下面的控制器动作上设置一个断点并单击publish,什么也不会发生。断点没有命中。

    public ActionResult ProviderActivate(FormCollection form) //change id to form post hidden element refer to TSProps
    {
        if (!CustomSecurity.IsAdmin(User.Identity.Name))
            return RedirectToAction("Index", "Home");
        string pid = form["pid"];
        bool any = _db.CareProviders.Where(c => c.ProviderId == pid && !c.Activated.HasValue).Any();
        ....etc

用FormMethod发回.Post使用模态

在与OP讨论后,发现在提交按钮上使用data-dismiss属性会导致表单不发布。

这篇文章解释了为什么会发生这种情况。

你可以在你的表单中添加一个隐藏字段,然后为隐藏字段指定ID,这样当你向你的控制器发送消息时,它就可以在你的控制器操作中使用了。

<input type="hidden" name="accountId" id="accountId" val="" />

然后在您的example2 on click函数中添加另一行

$('#accountId').val(pid);

最后,在控制器中,为控制器动作添加一个名为accountId的参数。