2016-12-29 25 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將變爲false,並且添加的條目將顯示在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); 
    } 
} 
相關問題