【问题标题】:get resource from ASP.NET App_GlobalResources in separate DLL Library从单独的 DLL 库中的 ASP.NET App_GlobalResources 获取资源
【发布时间】:2010-05-02 11:26:17
【问题描述】:

我有一个包含一个 Web 项目和一个类库的解决方案。在 web 项目中,我有 App_GlobalResources 文件夹和资源文件。在 web 项目中使用的代码中,我可以像这样访问资源: 字符串 r = Resources.res.ResourceString123;

如何从类库中获取这个资源字符串?

【问题讨论】:

  • 首先你要确保全局资源文件是公开的holyhoehle.wordpress.com/2010/02/20/…
  • 然后在您的视图中“使用 YourProjectName.App_GlobalResources;”然后是“Content.msg”,我的全局资源中有 Content.resx 文件,键为“msg”

标签: c# asp.net resources get


【解决方案1】:

我还为我的 Web 项目和类库使用单独的程序集。我需要在我的 ModelBinders 的 Web 项目中访问我的 App_GlobalResources。我是通过这种方法访问资源的(参见:A Beginner's Guide to ASP.NET Application Folders)。

HttpContext.GetGlobalResourceObject( string classKey , string resourceKey )

有一次需要注意的是,您需要访问 HttpContext,我通过 ModelBinder 中的 controllerContext 拥有它。

我的 ModelBinder 代码如下:

var errorMessage = controllerContext.HttpContext.GetGlobalResourceObject( "DefaultModelBinder" , "PropertyValueRequired" ) as string;

以上内容允许我在 ASP.NET 的默认错误消息和我的 ModelBinders 中获得一致的错误消息,即使我将它们放在单独的程序集中。

【讨论】:

    【解决方案2】:

    在 .net 2.0 中,您需要将 InternalsVisibleTo 属性添加到程序集并将其设置为需要访问文件的命名空间:

    MSDN:http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx

    另一种选择是在类库中创建一个类,它可以返回您需要的字符串...

    HTH。

    【讨论】:

      【解决方案3】:

      如果使用 Visual Studio 2008,您可以在类库中将 Resource designer 上的访问修饰符设置为 public

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-25
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多