从另一个项目访问resx资源文件

我正在使用asp.net 3.5,我的解决方案目前有2个项目,一个API类项目和一个网站项目,在类项目中我有一个名为checkin.resx的资源文件。 为了能够从我的网站项目访问资源文件,我不得不将“访问修饰符”设置为公共,这允许我使用强类型名称来访问资源,例如: CkiApi.Checkin.Resources.Checkin.OCKI_HeaderText ,其中Checkin是.resx文件,OCKI_HeaderText是资源键。

我面临的问题是我无法从前端aspx代码访问资源,例如,设置标签的文本属性或validation错误消息。 我尝试了以下语法无济于事:

 <asp:Label AssociatedControlID="IdentMethods" EnableViewState="false" ID="lblIdentMethod" runat="server" Text=""> 

我得到的错误是

找不到具有键“OCKI_IdentificationMethod”的资源对象。

但无论我将类名设置为什么,我都会得到同样的错误,我正在考虑它,因为它试图查看网站项目,但我无法弄清楚如何告诉它看看API! 有人可以帮忙吗?

我可以使用以下设置非服务器端标签:

 

资源表达式( <%$ Resources: ClassKey, ResourceKey %> )使用场景后面的ResourceExpressionBuilder类。 此类只能查找全局和本地资源(在网站的App_GlobalResourcesApp_LocalResources文件夹中)。

相反,您可以使用CodeExpressionBuilder类来访问来自不同项目的资源。 以下是如何使用它。

将CodeExpressionBuilder类添加到App_Code文件夹:

 using System.CodeDom; using System.Web.Compilation; using System.Web.UI; [ExpressionPrefix("Code")] public class CodeExpressionBuilder : ExpressionBuilder { public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return new CodeSnippetExpression(entry.Expression); } } 

将以下内容添加到web.config中的system.web / compilation部分:

  ...     

最后,您可以调用为.resx文件生成的强类型类:

  

不确定这是否会解决您的问题,但您是否看过HttpContext.GetGlobalResourceObject方法?

我已经用它来访问Web项目中的资源,从框架项目中的类库中获取资源 – 所以也许你可以幸运地使用它来反过来。