2009-06-30 47 views
4

我想使用由RuleViolation返回的錯誤消息作爲Html.ValidationMessage(modelName,validationMessage)的validationMessage。asp.net MVC RuleViolation.ErrorMessage到Html.ValidationMessage

簡單的例子:Person.cs

public partial class Person 
    { 
     public bool IsValid 
     { 
      get { return (GetRuleViolations().Count() == 0); } 
     } 

     public IEnumerable<RuleViolation> GetRuleViolations() 
     { 
      if (String.IsNullOrEmpty(Name)) 
       yield return new RuleViolation("Name required", "Name"); 

      yield break; 
     } 
} 

加入錯誤的ModelState

foreach (RuleViolation issue in errors) 
      { 
       modelState.AddModelError(issue.PropertyName, issue.ErrorMessage); 
      } 

ASP頁面 /createPerson/

<%=Html.TextBox("Name",Model.Name)%> 
<%=Html.ValidationMessage("Name", "Name required")%> 

我想要做的就是使用RuleViolation消息而不是上面的「需要名稱」。這可能嗎?

解決方案(從Alexander Prokofyev)使用ValidationMessage與單個放慢參數

<%=Html.ValidationMessage("Name")%> 

這是一個很簡單的例子,我的一些業務規則上取決於值輸入扔不同RuleViolations。

非常感謝。 西蒙

回答

4

您應該使用ValidationMessage()傭工像

<%= Html.ValidationMessage("Name") %> 

只有一個參數和返回視圖之前調用代碼

foreach (var ruleViolation in GetRuleViolations()) 
    ModelState.AddModelError(ruleViolation.PropertyName, 
     ruleViolation.ErrorMessage); 

在控制器(我想你已經採取RuleViolation類定義來自NerdDinner來源)。

+0

非常感謝Alexander,DOH!對我而言,我應該看到這一點 – longhairedsi 2009-06-30 12:46:54