我有一个强类型视图模型和一个MetaData分部类,它在必填字段和字段类型上有注释属性。 Create.aspx视图页面在提交时有一个表单将在控制器中执行Create方法。当用户在没有输入所有必填字段的情况下提交表单时,在到达UpdateModel()行时会引发异常。但是,未显示注释字段中指定的错误消息。相反,执行遍历RuleViolation()并落在最通用的异常消息上。因此,用户不知道没有输入某些必填字段。如果我在RuleVilolation()方法中定义检查是否为空,那么它不是DRY。有谁知道为什么没有从MetaClass显示错误消息?谢谢。
///Controller method
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult Create(string id, [Bind(Prefix = "Transfer")]TransferFormViewModel newTransferViewModel, string cancel)
{
....
if (ModelState.IsValid)
{
Transfer newTransfer = new Transfer();
if (ModelState.IsValid)
{
try
{
Person person = base.ApplicaitonRepository.GetPerson(intID);
UpdateModel<Transfer>(newTransfer, "Transfer");
.....
}
catch (Exception ex)
{
newTransfer.MiscException = ex;
HelpersLib.ModelStateHelpers.AddModelErrors(this.ModelState, newTransfer.GetRuleViolations());
}
}
}
return View(new TransferFormViewModel(base.ApplicaitonRepository, newTransfer));
}
///partial domain objec class
[MetadataType(typeof(TransferMetaData))]
public partial class Transfer
{
public IEnumerable<RuleViolation> GetRuleViolations()
{
....
}
}
///MetaData class
class TransferMetaData
{
[Display(Name="List Type")]
public int ListType { get; set; }
[Required(ErrorMessage = "Notification Date/Time is required."), Display(Name = "Notification Date/Time")]
public DateTime AddedToListDate { get; set; }
[Required(ErrorMessage="Admit Date/Time is required."), Display(Name="Admit Date/Time")]
...
}
答案 0 :(得分:0)
你有&lt;%= Html.ValidationSummary()%&gt;在你看来的某个地方?
您的ModelState中有哪些条目?