我在ASP MVC錯誤處理方面遇到了一些麻煩。向asp mvc表單添加非字段相關的錯誤
在用戶嘗試連接到設備的窗體上。如果用戶輸入了無效的設備名稱,則告訴用戶該名稱無效非常簡單。
我在所有的數據類上實現了IEnumerable<RuleViolation> GetRulesViolations()
。該RuleViolation
類有兩個字段:PropertyName
和ErrorMessage
,如果我在提交我只是調用GetRulesViolations方法和設置上的ModelState錯誤得到一個錯誤:
catch {
foreach (var issue in device.GetRulesViolations()) {
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
return View();
}
,並與一些背景ASP MVC魔出現在錯誤在ValidationMessage佔位符的View model.Name:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type="submit" value="Connect" />
</p>
</fieldset>
}
現在的問題:
,如果我得到的錯誤是一樣的東西「無法連接到設備「,這不是與Name
字段相關的問題。這是一條應該出現在表單上方的消息,因爲它與整個表單有關。
有沒有一種直接的方式來設置這個像ModelState.AddError(「錯誤信息」),而不告訴密鑰,所以它將適用於整個表單或應創建一個Error
隱藏的屬性上的數據類和放置驗證該表單上的該屬性的消息?