Ami*_*imi 5 asp.net-mvc data-annotations asp.net-mvc-3
我在ASP.NET MVC3中创建了一个这样的继承属性:
public sealed class RequiredFromResourceAttribute : RequiredAttribute
{
public RequiredFromResourceAttribute(string errorResourceName, string errorResourceTypeName)
{
this.ErrorMessageResourceName = errorResourceName;
this.ErrorMessageResourceType = Type.GetType(errorResourceTypeName);
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
[RequiredFromResource("Title", "Resources.Resource, MyProject.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")]
public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)
它不起作用,MVC忽略了它.然后我创建一个更简单的类,它继承自RequiredAttribute,如下所示:
public class MyRequiredAttribute : RequiredAttribute
{
}
Run Code Online (Sandbox Code Playgroud)
我就像我说的那样使用它.但它没有再起作用.
尽管如此,所有这些方式都完美地适用于"DisplayNameAtrribute".
问题是什么?
您可以通过在 Global.asax 中添加以下代码来解决此问题:(在此处找到答案)
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredLocalizableAttribute), typeof(RequiredAttributeAdapter));
Run Code Online (Sandbox Code Playgroud)
或者,使用 marcind 的解决方案,我发现 的构造函数ModelClientValidationRequiredRule需要错误消息。以下是包含该字段的显示名称的更新版本:
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
string msg = FormatErrorMessage(metadata.GetDisplayName());
yield return new ModelClientValidationRequiredRule(msg);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |