我有一個強類型視圖模型和一個元數據部分類,它具有必需字段和字段類型的註釋屬性。 Create.aspx視圖頁面在提交時會有一個表單在控制器中執行Create方法。當用戶提交沒有輸入所有必填字段的表單時,一旦到達UpdateModel()行,就會拋出異常。但是,沒有顯示註釋字段中指定的錯誤消息。相反,執行循環遍歷RuleViolation()並落在最通用的異常消息中。因此,用戶不知道某些必填字段未被輸入。如果我在RuleVilolation()方法中定義檢查是否爲空的必填字段,那麼它不是DRY。有誰知道爲什麼這些錯誤信息沒有從MetaClass中顯示出來?謝謝。UpdateModel引發異常
///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")]
...
}
你應該考慮把你的整個代碼段標記爲代碼,因爲像這樣沒有人會閱讀它,因爲它是不可讀的...... – apolka 2010-10-26 07:47:56