我正在使用 ASP.NET MVC4 创建一个应用程序,但我遇到了关于 AJAX 和部分视图的问题。
现在,我有一个视图渲染:
- 一个局部视图(称为
_createUser
),它是一个模式框,其中包含一个用于在我的应用程序中创建用户的表单(通过渲染@{Html.RenderPartial("_createUser");}
) - 一个部分操作(称为
ListUsers
),它只是呈现当前在我的应用程序中注册的用户的操作(通过@{Html.RenderAction("users");}
在 html 表中呈现
当用户单击按钮时,其中包含的模式框_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,而不是返回 and ActionResult
,我应该返回一些包含状态字段的 JSON 以及与我的用户列表或验证错误相关的数据,并使用状态字段来了解我的主要部分必须更新视图。我真的不知道如何混合 JSON 结果和剃刀视图。有什么线索吗?
已更新(我现在无法回答我自己的问题,否则我必须等待 8 小时)。
好的,我最终使用了在此链接中找到的内容http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/
它非常简单,并且做得非常好!