客户端验证和ValidationSummary适用于我的项目(MVC4 + Razor + Unobtrusive JS),但是我的视图中没有显示服务器端错误,如果有任何客户端错误,它不会从视图中删除(它来自ModelState)。我试过Chrome14和IE9
服务器端错误正作为ModelState.AddModelError(string.Empty, ModelState.AllErrors());
添加到模型中,并显示为@Html.ValidationSummary(false)
视图。
修改
简单表单提交工作正常,它显示从服务器返回的多个错误消息并更新错误消息,但是,基于ajax的表单提交不起作用基于ajax的表单提交返回的错误消息根本不显示。
以下是如何制作请求的示例演示
@*... View contents related to Master Model ...*@
@using (Ajax.BeginForm("ActionToAddRecord", new AjaxOptions()))
{
@Html.Action("ActionToAddRecord")
<input type="submit" value="Add Record"/>
}
@*... View contents related to Master Model ...*@
ActionToAddRecord是表示主模型
所包含模型的局部视图错误以
的形式返回[HttpGet]
public ActionResult ActionToAddRecord()
{
return View();
}
[HttpPost]
public ActionResult ActionToAddRecord(childModel model)
{
ModelState.AddModelError(string.Empty, "First error message");
ModelState.AddModelError(string.Empty, "Second error message");
return View(model);
}
修改
我在VS2010中看到了模板化MVC应用程序中的类似功能,即基于对话框的登录表单。错误消息作为Json返回,然后JS用于显示它们,IMO,似乎MS使基于Ajax的请求非常简单和简洁(Ajax.BeginForm
)但是错过了错误处理部分。现在我不愿意为此使用JS,可能有更好的方法来自动处理这种类型的错误处理。
答案 0 :(得分:0)
解决了,有一个小错误。
主视图
@*Master View Contents*@
@using (Ajax.BeginForm("AddPaymentCurrency", new AjaxOptions { UpdateTargetId = "paymentCurrency" }))
{
<div id="paymentCurrency">
@{Html.RenderPartial("PaymentCurrency", Model.PaymentCurrencyNew);}
</div>
}
PaymentCurrency查看
@*Model Editors*@
@Html.ValidationSummary(false)
<input type="submit" value="Add Payment Currency"/>
<div id="paymentCurrencyList" style="width:inherit; height:auto; overflow:auto;">
@Html.Action("PaymentCurrencyList")
</div>
<强>控制器强>
[HttpPost]
public ActionResult AddPaymentCurrency(PaymentCurrency model)
{
if (!ModelState.IsValid)
{
ModelState.AddModelError(string.Empty, ModelState.AllErrors());
return View("PaymentCurrency", model);
}
//Add login
return View("PaymentCurrency", model);
}
public ActionResult PaymentCurrencyList()
{
//var list = getList
return View(list);
}
小错误
显示ValidationSummary时会突出显示字段,并在添加无效付款币种时显示星号。添加有效货币后,无法在无效的付款货币上显示ValidationSummary和星号,只会突出显示字段。
请帮我修复,我宁愿不改变当前的结构,否则我会开始大错误