2009-06-30 13 views
4

RuleViolationから返されたエラーメッセージをHtml.ValidationMessage(modelName、validationMessage)のvalidationMessageとして使用します。asp.net MVC RuleViolation.ErrorMessage into Html.ValidationMessage

簡単な例:Person.csにModelStateにエラーを追加する

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; 
     } 
} 

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から)で、これは非常に単純な例である

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

単一PARAMTERでValidationMessageを使用し、私のビジネスルールのいくつかは、値に応じて入力に異なるRuleViolationsを投げることができます。

多くのありがとうございます。 サイモン

答えて

4
あなたは

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

のような一つのパラメータのみでValidationMessage()ヘルパーを使用して、私はあなたがRuleViolationクラス定義をとっていると仮定(ビューを返す前に、コードのコントローラで

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

を呼び出す必要があります

ソースから)。

+0

多くの感謝のアレクサンダー、DOH!私のための瞬間私はそれを見たはずだった – longhairedsi