2016-12-29 5 views
0

私はプロパティを持つモデルを持っています。そして、モデルアイテムに値があるかどうかをチェックしたいと思います。また、データアノテーションを使用してプロパティを必須またはオプションに設定しません。プロパティが割り当てられていない場合、それから私は、「一部の検索条件を指定してください」などいくつかのモデル誤差を設定する必要がありモデルアイテムにMVCの値が割り当てられているかどうかを確認する方法は?

@using (Html.BeginForm("GetAdvanceSearchData", "Home", FormMethod.Post)){  
<div class="rTableCell" style="border:none !important"> 
       @Html.TextBoxFor(m => m.MessageStatus, new { placeholder = Html.DisplayNameFor(n => n.MessageStatus), @class = "fieldtextbox", @style = "height: 25px !important" }) 
       @Html.ValidationMessageFor(m => m.MessageStatus) 
      </div> 
      <div class="rTableCell" style="border:none !important"> 
       @Html.TextBoxFor(m => m.RequestType, new { placeholder = Html.DisplayNameFor(n => n.RequestType), @class = "fieldtextbox", @style = "height: 25px !important" }) 
       @Html.ValidationMessageFor(m => m.RequestType) 
      </div> 
      <div class="rTableCell" style="border:none !important"> 
      </div> 
      <div class="rTableCell" style="border:none !important"> 
       <p class="submit"> 
        <button type="submit" name="submit"> 
         <i class="fa fa-arrow-right" aria-hidden="true"></i> 
        </button> 
       </p> 
      </div> 
} 

これらのモデルのための唯一のいくつかのプロパティです。

+0

問題の[MCVE]あなたのコードを追加してください。 – Esko

+0

あなたはそれをクライアントまたはサーバー側で行いたいですか? –

答えて

1

アクションメソッドGetAdvanceSearchDataでは、検証属性に加えて、またはそれらの代わりに独自の有効性チェックを行うことができます。

ModelStateにエントリを追加すると、ModelState.IsValidが偽になり、追加されたエントリがHtml.ValidationMessageFor(...)またはHtml.ValidationSummary()の出力に表示されます。

例:

[HttpPost] 
public ActionResult GetAdvanceSearchData(YourModel vm) 
{ 
    if (vm == null || (string.IsNullOrEmpty(vm.MessageStatus) && string.IsNullOrEmpty(vm.RequestType))) 
    { 
     ModelState.AddModelError("", "Please specify some search criteria") 
     // Using "" as Key will only show when you use @Html.ValidationSummary(). 
     // Using "myErr" as Key will show when you use @Html.ValidationMessage("myErr"). 
     // Using a property name as Key will show it next to the property if you use @Html.ValidationMessageFor(m => m.property). 
    } 
    if (ModelState.IsValid) 
    { 
     var results = ... 
     return View("ResultsView", results); 
    } 
    else 
    { 
     return View(vm); 
    } 
} 
関連する問題