2013-10-16 60 views
0

的顯示驗證消息想這是我的看法......MVC - 到位標籤

<div class="control-group"> 
     @Html.LabelFor(model => model.Title, new { @class = "control-label" }) 
     @Html.ValidationMessageFor(model => model.Title, null, new { @class = "help-inline" }) 
     <div class="controls"> 
      @Html.EditorFor(model => model.Title) 

     </div> 
     </div> 

在錯誤的情況下,我們如何隱藏代替LabelLabel和顯示validation message

請在此建議...

回答

0

您可以顯示標籤只有在ModelState中是有效的:

<div class="control-group"> 
    @if (this.ViewData.ModelState.IsValid) 
    { 
     @Html.LabelFor(model => model.Title, new { @class = "control-label" }) 
    } 
    @Html.ValidationMessageFor(model => model.Title, null, new { @class = "help-inline" }) 
    <div class="controls"> 
     @Html.EditorFor(model => model.Title) 
    </div> 
</div> 

請注意,如果您正在使用客戶端驗證,你還需要掛鉤到客戶端上的驗證方法,並切換相應的標籤可見性。

+0

如果OP正在使用客戶端驗證,這將不起作用? – James

+0

不,它不會工作。但它很容易實現。您必須連接到客戶端驗證並在客戶端隱藏相應的標籤。 –

+0

是的,值得更新的答案包括,因爲我認爲現在大多數人會使用客戶端。 – James

0

只是恭維Darin的答案,如果您正在使用客戶端驗證,你需要做的是這樣

$("#myForm").validate({ 
    invalidHandler: function(event, validator) { 
     $('.control-label').hide(); 
    } 
}); 

否則標籤不會隱藏。

當頁面加載時,儘管用戶禁用了JS,它仍然值得檢查ModelState.IsValid