asp.net-mvc - 通过属性名称访问资源时,是否可以更改使用的 ResourceManager?

标签 asp.net-mvc resources

我想使用自定义 ResourceProvider,但仍然具有强类型资源名称的好处。在我看来,如果我像这样直接访问资源属性:

@Html.Raw(UIText.Header)

然后直接从 resx 文件中读取文本,而不是通过我在 web.config 中定义的自定义提供程序工厂。
@Html.Raw(HttpContext.GetLocalResourceObject("UIText.resx", "Header").ToString())

工作正常,但有被字符串键入的缺点。我创建了一个扩展方法来包装它,但它仍然很丑陋:
@Html.ResourceText(() => UIText.Header)

那么,有没有办法直接使用资源属性,但让它们通过自定义提供程序路由,而不必创建我们自己的 ResXFileCodeGenerator ?

最佳答案

一个包含字符串的静态类对你有用吗?我制作了一个 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;

希望我没有完全错过它;)

关于asp.net-mvc - 通过属性名称访问资源时,是否可以更改使用的 ResourceManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5826822/

相关文章:

android.content.res.Resources$NotFoundException : String resource ID

asp.net - 如何使用resxresourcewriter写所有三个值?

c# - 如何从嵌入式 Uri 资源(png 图像)加载 System.Drawing.Bitmap 对象?

error-handling - 用于抽象资源分配/解除分配的惯用 Go

sql-server - 外键 Entity Framework 6 在依赖表中插入 null

asp.net-mvc - 客户端的 ASP.NET MVC 多对多模型

asp.net-mvc - 考虑逻辑是不是不好的做法

c# - 在 MVC Controller 中加载 XML

c# - 什么是最小的 ASP.NET MVC 4 安装?

android - 蜂窝中的多个图标图像