【问题标题】:MVC 3 C# RequiredAttribute ExtensionMVC 3 C# 必需属性扩展
【发布时间】:2011-10-26 13:44:43
【问题描述】:

我尝试扩展RequiredAttribute 以进行一些本地化。我是这样写的:

public class LocalizedRequiredAttribute : RequiredAttribute

{
    public LocalizedRequiredAttribute(string errorMessageResourceName)
    {
        this.ErrorMessageResourceName = string.IsNullOrEmpty(errorMessageResourceName) ? "Required_ValidationError" : errorMessageResourceName;
        ErrorMessageResourceType = typeof(bop.Core.Resources.Label);
    }
}

在客户端不呈现验证消息。怎么了? 感谢帮助。 卢卡

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    在您的后续评论中,您指定客户端验证不起作用。看起来你问了同样的问题here,但为了 StackOverflow,我会提供答案。

    LocalizedRequiredAttribute 类还必须实现 IClientValidatable 才能使客户端验证工作:

    using System.Web.Mvc;
    public class LocalizedRequiredAttribute : RequiredAttribute, IClientValidatable
    {
        // your previous code
    
        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            yield return new ModelClientValidationRule
            {
                // format the error message to include the property's display name.
                ErrorMessage = FormatErrorMessage(metadata.DisplayName),
    
                // uses the required validation type.
                ValidationType = "required"
            };
        }
    }
    

    【讨论】:

      【解决方案2】:

      查看 thisthis Darin Dimitrov 的帖子。

      希望这会有所帮助。

      【讨论】:

      • 嗨达林,感谢您的链接。我试过你的代码:` public class LocalizedRequiredAttribute : RequiredAttribute { public LocalizedRequiredAttribute(string resourceTag) { ErrorMessage = GetMessageFromResource(resourceTag); } 私有静态字符串 GetMessageFromResource(String resourceTag) { return ResourceManager.Current.GetResourceString(resourceTag); } } ` 但在“ResourceManager.Current”中出现错误。
      • 我部分解决了。现在 LocalizedAttribute 只验证服务器端,而不是客户端......但如果我使用基本属性在我的客户端工作正常。任何想法?谢谢。卢卡
      猜你喜欢
      • 2012-09-16
      • 1970-01-01
      • 2011-11-12
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      相关资源
      最近更新 更多