Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用具有属性的自定义资源提供程序?_C#_Asp.net Mvc_Asp.net Mvc 3_Resources_Data Annotations - Fatal编程技术网

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

C# 如何使用具有属性的自定义资源提供程序?,c#,asp.net-mvc,asp.net-mvc-3,resources,data-annotations,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)将查找具有公共属性的类,但我的资源文件没有生成

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

public class Friend
{
    [Required(ErrorMessage = "Invalid Name")]
    [Display(Name = "Friend's name")]
    public string Name { get; set; }
}
默认资源提供程序(如果我设置了
ResourceType
/
ErrorMessageResourceType
)将查找具有公共属性的类,但我的资源文件没有生成的类,它们是纯XML


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

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

  • 编写自定义生成提供程序, 它从 数据库
  • 创建动态对象,其中 将属性名称转换为键 对于资源管理器
  • 扩展数据属性 注释
  • 使用T4模板生成 包含资源的类
[EDIT}

  • 谢谢你关于动态的问题 反对
为此,您必须动态创建friend对象。这意味着从DynamicObject类继承friend,并实现TryGetMember()和TrySetMember()。这些属性在资源对象“HttpContext.GetLocalResourceObject”的内部工作然后,您需要实现自定义ModelBinder以使用环绕它的方式


这家伙找到了更好的解决办法:-

我看到了,对动态对象产生了兴趣。它是如何工作的?
Approaches to solve the problem: