如何从ASP.NET标记获取资源字符串?

时间:2010-12-24 09:31:45

标签: c# asp.net resources globalization embedded-resource

您好 我有一个名为X.Common.DLL的程序集。多语言应用程序有一些资源文件。我们说它是Language.resx Language.en-US.resx .... etc ....

我有一个Web应用程序,其中包含以上dll作为参考...

那么如何在我的Web应用程序标记方面使用此资源文件?

Text="<%$ Resources:Class, ResourceKey %>"无效,因为“Class”名称在另一个程序集中......

2 个答案:

答案 0 :(得分:3)

您可以轻松创建一个类似这样的包装类

public class ResourceWrapper
{
     private ResourceManager resourceManager;

     public ResourceWrapper()
     {
         resourceManager = new ResourceManager("Namespace.Common", Assembly.Load("x.common"))
     }

     public string String(string resourceKey)
     {
         return ResourceManager.GetString(resourceKey);
     }
 }     

找到新ResourceManager(...)的第一个参数的正确名称有时可能有点棘手。 为了让自己更容易,你可以这样打电话:

Assembly.Load("x.common").GetManifestResourceNames() and check the returned results.

如果创建静态包装器,则可以使资源调用代码如下所示:

<%= Resource.String("MyResourceKey") %>

答案 1 :(得分:0)

您应该引用web.config中的其他程序集以在Web表单中公开其内容。 http://msdn.microsoft.com/en-us/library/ms164642.aspx

编辑:由于评论的更详细答案: 您应该完成webconfig的pages / namespaces部分,如下所示:

<pages>
    <namespaces>
        ...
        <add namespace="My.Fully.Qualified.Namespace"/>
    </namespaces>   
</pages>

当然也应该引用提供命名空间的程序集(项目引用,web.config的部分)

然后你应该可以写“&lt;%= MyResx.MyEntry%&gt;

之类的东西