包含表单的ASP.NET MVC3 Html.Action

时间:2011-05-06 12:53:17

标签: forms asp.net-mvc-3 child-actions

我的页面上有一个包含表单的窗格。

我以与以下类似的方式使用此pod:

@Html.Action("Pod","Home")

在Pod的HttpPost操作中有一些业务规则检查处理表单帖子。如果此业务规则失败,我会向模型状态添加错误。

问题是,当业务规则无法验证时。我从pod操作返回一个View,它只显示空白页面上的pod。

如何正确重用此类表单并仍然对此业务规则进行服务器端验证(需要db命令验证)?

1 个答案:

答案 0 :(得分:6)

一种可能性是AJAX化Pod partial:

中的表单
<div id="pod">
    @Html.Action("Pod","Home")
</div>

Pod.cshtml内部:

@using (Html.BeginForm("Pod", "Home", FormMethod.Post, new { id = "podForm" }))
{
    ...
}

最后AJAX化它:

$(function() {
    $('#podForm').submit(function() {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function(result) {
                $('#pod').html(result);
            }
        });
    });
});

最后要确保的是POST操作将Pod.cshtml作为局部视图返回。两种可能性:

[HttpPost]
public ActionResult Pod(PodViewModel model)
{
    if (!ModelState.IsValid)
    {
        return PartialView(model);
    }
    ...
}

Pod.cshtml部分:

@{
    Layout = null;
}