如何使用属性的自定义资源提供程序?

时间:2011-05-10 22:48:43

标签: c# asp.net-mvc asp.net-mvc-3 resources data-annotations

如何使用自定义方法检索字符串资源并在属性上使用?例如:

public class Friend
{
    [Required(ErrorMessage = "Invalid Name")]
    [Display(Name = "Friend's name")]
    public string Name { get; set; }
}

默认资源提供程序(如果我设置ResourceType / ErrorMessageResourceType)将查找具有公共属性的类,但我的资源文件没有生成的类,它们是纯XML。

我有一个方法ResourceHelper.Get(key),它返回我期望的值。如何更改它以使用我的方式检索资源?

1 个答案:

答案 0 :(得分:2)

在您的案例中,有几种不同的方法可以尝试。第四种方法听起来很有希望。

http://carrarini.blogspot.com/2010/08/localize-aspnet-mvc-2-dataannotations.html

Approaches to solve the problem:
  • 编写自定义构建提供程序, 从中编译资源 数据库中。
  • 创建动态对象,其中 将属性名称转换为键 资源管理器。
  • 扩展数据属性 注释
  • 使用T4模板生成 包含资源的类。

<强> [EDIT}

  • 关于动态的问题 对象

为此,您必须动态创建好友对象。这意味着从DynamicObject类继承Friend并实现TryGetMember()和TrySetMember()。这些属性内部适用于Resource对象“HttpContext.GetLocalResourceObject”,并允许您创建具有本地化属性的动态Friend类。之后,您需要实现自定义的ModelBinder来使用它。

这家伙找到了更好的解决方法: - MVC3 ModelBinder for DynamicObject