我想使用自定义ResourceProvider但仍然具有强类型资源名称的好处。在我看来,如果我直接访问资源属性似乎是这样的:
@Html.Raw(UIText.Header)
然后直接从resx文件中读取文本,而不是通过web.config中定义的自定义提供程序工厂。
@Html.Raw(HttpContext.GetLocalResourceObject("UIText.resx", "Header").ToString())
工作正常,但是有字符串输入的缺点。我已经创建了一个扩展方法来包装它,但它仍然非常难看:
@Html.ResourceText(() => UIText.Header)
那么,有没有办法直接使用资源属性,但让它们通过自定义提供程序进行路由而无需创建自己的ResXFileCodeGenerator
?
答案 0 :(得分:0)
保存字符串的静态类是否适合您?我制作了一个T4模板文件来查看我的.resx并自动生成这个静态类 。
这是T4模板编译的结果:
public static class ResourceStrings {
public const string AddAttachments = @"AddAttachments";
public const string button_create = @"button_create";
public const string button_delete = @"button_delete";
public const string button_details = @"button_details";
public const string button_display = @"button_display";
...
}
我将ASP.NET MVC属性用于这样的类:
[StringLength(8, ErrorMessageResourceType = typeof(i18n),
ErrorMessageResourceName = ResourceStrings.Client_VatNo_length_validation_msg)]
public string VatNo;
[StringLength(10, ErrorMessageResourceType = typeof (i18n),
ErrorMessageResourceName = ResourceStrings.Client_BaseIdentNr_length_validation_msg)]
public string BaseIdentNr;
希望我没有完全错过它;)