我正在使用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/
中找到的内容这很简单,做得很好!