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

嗨,我有一个叫做X.Common.DLL的程序集。 有一些资源文件的多语言应用程序。 让我们说它Language.resx Language.en-US.resx ....等....

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

那么如何在我的Web应用程序标记端使用这个资源文件呢?

Text="<%$ Resources:Class, ResourceKey %>"由于“Class”名称位于另一个程序集中而无效...


你可以很容易地创建一个类似这样的包装类

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") %>

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

编辑:由于下面的评论更详细的答案:你应该完成这样的webconfig的页面/命名空间部分:

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

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

那么你应该可以写下“<%= MyResx.MyEntry%>”之类的东西

链接地址: http://www.djcxy.com/p/4057.html

上一篇: How to get resource strings from ASP.NET markup?

下一篇: Need help implementing a special edge detector