是否可以在!ModelState.IsValid
?
我的观点(简化如下)将<div class="control">
包围每个<input>
字段
@using(Html.BeginForm("AddRole","Admin", FormMethod.Post, new { @class = "ajax" })) {
<div class="control">
@Html.TextBoxFor(x => x.Role, new { @class = "input-xlarge", @placeholder = Html.DisplayNameFor(x => x.Role)})
@Html.ValidationMessageFor(x => x.Role)
</div>
}
$(function () {
$('form.ajax').submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
if (result.success) {
location.reload(true);
} else {
$(this).html(result);
}
}
});
return false;
});
});
和我的控制员......
[HttpPost]
public ActionResult AddRole(RoleModel model) {
if(!ModelState.IsValid) {
return PartialView("_AddRolePartial", model);
}
try {
System.Web.Security.Roles.CreateRole(model.Role);
return Json(new {success = true});
} catch(Exception) {
ModelState.AddModelError("", "Role creation unsuccessful.");
}
return PartialView("_AddRolePartial", model);
}
我希望能够为模型中任何无效的属性添加类error
到div.control
。我想我可以通过jQuery在ajax成功事件中处理这个问题,但也许有更好的解决方案。
答案 0 :(得分:2)
你想要实现的目标会引入你的控制器和你的观点之间的耦合,这从根本上反对MVC背后的想法(关注点分离)。您的控制器不应该知道您的视图,所以我强烈建议您在视图中使用jQuery / javascript。只需返回包含无效属性名称的viewbag,并使用jquery添加错误类。