0

ASP.NET MVC客戶端驗證我下面這篇文章從服務層

http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs

包括業務邏輯服務層在我的ASP.NET MVC Web應用程序。

我可以使用ModelState類將消息從服​​務層傳遞到Html.ValidationSummary中的查看模型。

我的視圖模型執行基本驗證邏輯(使用DataAnnotation屬性),我已經通過默認設置,其上顯示錯誤消息我的形式的每一個字段啓用ClientValidation

來自服務層的業務邏輯錯誤消息僅在將表單發送到服務器後纔會顯示在Html.ValidationSummary上。

經過服務層驗證後,我想突出顯示一個或多個字段,並從服務層發出的消息顯示在這些字段上,而不是Html.ValidationSummary

任何想法如何做到這一點?

回答

2

這裏的驗證看起來如何在服務器上:

protected bool ValidateProduct(Product productToValidate) 
{ 
    if (string.IsNullOrEmpty(productToValidate.Name)) 
     _validatonDictionary.AddError("Name", "Name is required."); 
    if (string.IsNullOrEmpty(productToValidate.Description)) 
     _validatonDictionary.AddError("Description", "Description is required."); 
    if (productToValidate.UnitsInStock < 0) 
     _validatonDictionary.AddError("UnitsInStock", "Units in stock cannot be less than zero."); 
    return _validatonDictionary.IsValid; 
} 

所有您需要做的是有相應的ValidationMessageFor助手在視圖和來自服務器的錯誤消息,這些領域將被關聯到相應字段:

@using (Html.BeginForm()) 
{ 
    <div> 
     @Html.LabelFor(x => x.Name) 
     @Html.EditorFor(x => x.Name) 
     @Html.ValidationMessageFor(x => x.Name) 
    </div> 
    <div> 
     @Html.LabelFor(x => x.Description) 
     @Html.EditorFor(x => x.Description) 
     @Html.ValidationMessageFor(x => x.Description) 
    </div> 
    <button type="submit">Create</button> 
} 
+0

感謝達林,你的回答幫了我很多的感謝! – GibboK 2012-07-10 08:03:14

0

由於達林我找到了解決我的問題。

在細節:

我可以使用

_validatonDictionary.AddError("Name of my field", "Custom message") 

這樣我就可以顯示一條消息,並突出顯示特定的字段(DataAnnotation很簡單的事情)。

如果我想沒有亮點顯示的ValidationSummary只是一個消息的特定字段我用

_validatonDictionary.AddError(string.Empty, "Custom message") 

請注意:string.Empty