2011-10-19 5 views
1

ASP MVCエラー処理にいくつか問題があります。非フィールド関連のエラーをasp mvcフォームに追加します。

ユーザーがデバイスに接続しようとするフォーム上。 useが無効なデバイス名を入力した場合、その名前が無効であることをユーザーに伝えるのはかなり簡単です。

すべてのデータクラスにIEnumerable<RuleViolation> GetRulesViolations()を実装しています。 PropertyNameErrorMessageと私はちょうどGetRulesViolationsメソッドを呼び出すとにModelStateにエラーを設定提出上のエラーが出る場合:

catch { 
    foreach (var issue in device.GetRulesViolations()) { 
      ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage); 
    } 
    return View(); 
} 

とエラーがで表示されるいくつかの背景のASP MVC魔法とをRuleViolationクラスには2つのフィールドがありmodel.NameためValidationMessageプレースホルダでビュー:

@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); 
関連する問題