2011-10-19 26 views
1

我在ASP MVC錯誤處理方面遇到了一些麻煩。向asp mvc表單添加非字段相關的錯誤

在用戶嘗試連接到設備的窗體上。如果用戶輸入了無效的設備名稱,則告訴用戶該名稱無效非常簡單。

我在所有的數據類上實現了IEnumerable<RuleViolation> GetRulesViolations()。該RuleViolation類有兩個字段:PropertyNameErrorMessage,如果我在提交我只是調用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隱藏的屬性上的數據類和放置驗證該表單上的該屬性的消息?

回答

3

是,空字段名,就像這樣:

ModelState.AddModelError("", issue.ErrorMessage); 
相關問題