使用模式回传FormMethod.Post

时间:2015-09-30 11:42:11

标签: javascript c# jquery asp.net-mvc razor

我有一个jQuery Datatable,它有一些自定义按钮,当点击一个boostrap模态被调用。模态询问用户是否想要停用帐户。

在我的example2数据表中,我点击按钮时将帐户的唯一标识符(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)按钮,没有任何内容发回控制器,没有帐户被停用/激活。如果我在下面的控制器操作上设置了一个断点并单击发布,则没有任何反应。断点没有被击中。

    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

1 个答案:

答案 0 :(得分:0)

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

This帖子解释了为什么会发生这种情况。

您可以在表单中添加隐藏字段,然后将ID分配给隐藏字段,这样当您发布到控制器时,它将在控制器操作中可用。

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

然后在点击功能

上为example2添加另一行
$('#accountId').val(pid);

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