MVC検証保証型検証パッケージ(MVC Foolproof Validation)を使用しています。モデルが無効な場合にMVCクライアント側の検証の要約が表示されない
他のモデルプロパティが空の場合は、trueにする必要があります。 IDフィールドと場所フィールドが空のままになっている場合、ModelStateが正しく無効に設定されているため、検証部分が機能します。 ModelState配列のエラーを調べると、私はその動作を見ることができます。
私の問題は、クライアント側の検証サマリが表示されないことです。ここで私はものを設定している方法です。誰も私の問題を見つけることができますか?私の見解では
[DisplayName("Image Id")]
public string Id{ get; set; }
[DisplayName("Location Id")]
[RequiredIfEmpty("Id", ErrorMessage = "You must..etc"]
public string LocationId{ get; set; }
私はモデルの状態をチェックしています私のコントローラのアクションで
<div class="form-horizontal">
<hr/>
@Html.ValidationSummary(true, "", new {@class = "text-danger"})
<div class="form-group">
@Html.LabelFor(model => model.SearchCriteria.Id, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.SearchCriteria.Id, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.SearchCriteria.Id, "", new {@class = "text-danger"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.SearchCriteria.LocationId, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.SearchCriteria.LocationId, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.SearchCriteria.LocationId,"", new {@class = "text-danger"})
</div>
</div>
を次のように私は、検証の概要と入力を設定しています。 ModelState.AddModelError(..)を呼び出す必要がありますか?私はそれを試みましたが、おそらく私はそれを呼び出す必要がある方法があります。
[HttpPost]
public ActionResult Search(SearchCriteria searchCriteria)
{
var searchViewModel = new SearchViewModel
{
SearchCriteria = searchCriteria
};
if (ModelState.IsValid)
{
...
}
//ModelState.AddModelError("LocationId", "test");
return View(searchViewModel);
}
'@ Html.ValidationSummary(true、..)は、プロパティレベルのエラーを除外します。しかし '@ Html.ValidationMessageFor(model => model.SearchCriteria.LocationId、...)'は、 'Id'が' null'ならばその位置にエラーメッセージを表示し、 LocationId'。これを正しく設定しておけば、エラーメッセージが表示され、コントローラーメソッドに当てはまるという事実によって他の問題が示唆されますので、フォームは送信できません。 –
そして、メソッドのパラメーターあなたのビュー内のモデルが '@model SearchCriteria 'ではないと思われるときは' SearchCriteria'です。さらに多くの問題を示唆しています –