【问题标题】:MVC 3 Validation Attribute Error Message for Multi Tenant Application多租户应用程序的 MVC 3 验证属性错误消息
【发布时间】:2012-06-11 02:53:31
【问题描述】:

我正在使用 MVC3 和 C# 开发多租户应用程序。 我正在使用带有用验证属性装饰的属性的模型类。 我想要做的是在客户端和服务器端返回特定于租户的错误消息。

有没有办法在运行时为每个请求挂钩 mvc 验证并呈现/返回特定于租户的消息?

我的代码 sn-p 很简单:

型号:

public class TestModel
{
  [Required(ErrorMessageResourceName="errormessage",        ErrorMessageResourceType=typeof(Global)]
  [RegularExpression(@"\d+", ErrorMessageResourceName="errormessagedigit",   ErrorMessageResourceType=typeof(Global)]  
  public string TestProperty {get; set;}
}

查看:

@using(Html.BeginFrom())
{
  @Html.ValidationSummary(false, "")<br/> 
  @Html.TextBoxFor(x => x.TextProperty)<br />
  <input type="submit" value="submit" />
}

【问题讨论】:

    标签: asp.net asp.net-mvc-3


    【解决方案1】:

    一种方法是创建一组custom validation attributes,每个都继承自一个现有的验证属性(例如MyRequired),但包含用于注入租户特定错误消息的代码。

    【讨论】:

      【解决方案2】:

      我想我找到了问题的答案。

      您需要从每个现有属性继承并覆盖 FormatErrorMessage 方法。 在此方法中,您可以访问包含原始验证属性错误消息的 ErrorMessageString 属性。您可以创建请求/租户特定的逻辑来格式化/覆盖错误消息。

      看起来这种方法可以为每个请求错误消息返回 /render custom。

      代码sn-p:

      public class RequiredAttributeTest:RequiredAttribute   
       {
      
      public override string FormatErrorMessage(string name)        
         {
              // code to return request / tenant specific error message    
              return GetTenantError(ErrorMessageString, name); 
          }
      }
      
      public class RegularExpressionAtributeTest:RegularExpressionAttribute
        {
          public RegularExpressionAtributeTest(string pattern) : base(pattern) { }
      
      public override string FormatErrorMessage(string name)
          {           
             // code to return request / tenant specific error message     
              return GetTenantError(ErrorMessageString, name);
          }
        }
      

      Global.asax.cs

      protected void Application_Start()
      {
      …
      DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttributeTest),  typeof(RequiredAttributeAdapter));
      DataAnnotationsModelValidatorProvider.RegisterAdapter
      (typeof(RegularExpressionAtributeTest), typeof(RegularExpressionAttributeAdapter));
      …
      }
      

      【讨论】:

        猜你喜欢
        • 2015-01-09
        • 2018-04-05
        • 2013-07-02
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多