使用AJAX - partialview和ModelState.IsValid和modalbox在MVC4中发布表单

时间:2013-05-09 17:44:39

标签: javascript jquery asp.net-mvc-4

我正在使用ASP.NET MVC4创建一个应用程序,我正面临着关于AJAX和部分视图的问题。

现在,我有一个视图渲染:

  • 部分视图(称为_createUser),它是一个模态框,包含用于在我的应用程序中创建用户的表单(通过@{Html.RenderPartial("_createUser");}呈现)
  • 部分操作(称为ListUsers),该操作只是简单地呈现当前在我的应用程序中注册的用户(通过html表中的@{Html.RenderAction("users");}呈现

当用户单击按钮时,_createUser中包含的模式框通过jquery显示,因此用户可以键入有关新用户的信息。当他点击模态框中的按钮时,表单将通过AJAX提交给我的控制器中的一个操作,该操作会检查ModelState.IsValid

这就是我被困的地方,因为我不知道使用jquery使用部分视图处理成功/错误的正确方法是什么,因为如果模型正确且注册正确,我只想刷新用户列表。 如果模型无效,我想刷新模式框,其中包含ModelState引发的错误。

我的行动是:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register( RegisterModel model )
    {
        if( ModelState.IsValid )
        {
            try
            {
                WebSecurity.CreateUserAndAccount( model.UserName, model.Password );
                WebSecurity.Login( model.UserName, model.Password );

                ViewBag.CreateUserSucceded = true;

                return RedirectToAction( "ListUsers" );
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError( "", ErrorCodeToString( e.StatusCode ) );
            }
        }

        return PartialView( "_createUser", model );
    }

我的jquery也很简单:

function SubmitCreateUserForm() {
    $.ajax({
        type: "POST",
        url: '@Url.Action("Register")',
        data: $("#createUserForm").serialize(),
        success: function (result, status, jqXHR) {
            ????
        }
    });
}

我认为正确的方法应该是使用JSON,而不是返回和ActionResult,我应该返回一些包含状态字段的JSON以及与我的用户列表或验证错误相关的数据并使用状态字段以了解必须更新主视图的哪个部分。 我真的不知道如何混合JSON结果和剃刀视图。任何线索?

更新(我现在无法回答我自己的问题,或者我必须等待8个小时)。

好的,我最终使用了我在此链接http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/

中找到的内容

这很简单,做得很好!

0 个答案:

没有答案