从 ASP .NET 中的服务器组件访问资源
Posted
技术标签:
【中文标题】从 ASP .NET 中的服务器组件访问资源【英文标题】:Accessing resource from server component in ASP .NET 【发布时间】:2010-09-09 07:17:17 【问题描述】:我是 ASP .NET 开发魔法的初学者,如果这是一个愚蠢的问题,请原谅我。 经过一番谷歌搜索并阅读(一些......)ASP .NET 3.5 Unleashed,我还没有找到一种方法来做我想做的事 - 这通常意味着我正在尝试做一些愚蠢的事情,或者很明显我已经错过了:)
我正在创建一个服务器控件,用于我公司正在开发的多个站点。这没什么花哨的,只是一个标准的在这里你可以编辑和创建用户控件。
这样做自然需要对某些文本进行本地化。
对我来说,这样做的自然方式是使用以某种约定命名的全局资源,然后包含服务器控件的项目可能会填充本地化数据。
但是,我在从我的组件中访问这些资源时遇到了一些问题。
在项目 A 的 App_GlobalResources 文件夹中创建了一个名为 CreateOrEditUserControl.da.resx 的资源文件(旁注:我需要将我的 App_GlobalResources 文件夹添加到 web-config 中吗?)。项目 A 包括来自项目 B 并通过程序集引用加载的 CreateOrEditUserControl。 CreateOrEditUserControl.da.resx 包含映射到字符串 Brugernavn 的键 UserName(这只是丹麦语本地化,您可能已经猜到了...)
在 CreateChildControls() 方法中的控件内(因为我需要本地化字符串),我尝试通过以下方式访问资源:
HttpContext.GetGlobalResource("CreateOrEditUserControl","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da.resx","UserName");
HttpContext.GetLocalResource("CreateOrEditUserControl.da.resx","UserName");
前三个返回 null,最后一个抛出异常,因为我没有权限从我的组件中访问所述资源,这似乎是合乎逻辑的。
到目前为止,我不得不求助于“hack”,您可以在其中指定查询字符串中的语言,然后我手动插入字符串。但是,这是不可取的,因为任何更改都需要更改组件,而不仅仅是用户...
这样做的正确方法是什么 - 如果有的话?
提前致谢!
【问题讨论】:
【参考方案1】:对我来说,这样做的自然方式是使用以某种约定命名的全局资源,然后包含服务器控件的项目可能会填充本地化数据。
我对 ASP.Net 几乎一无所知,但如果我可以在不同页面或各种应用程序中使用通用控件,我会在该控件“内部”包含可翻译资源。这样您就不必为每个项目本地化它,而只需一次。我很确定这在 ASP.Net 中是可能的。
至于访问全局资源(再次抱歉我的知识有限),您可能必须使用 ResourceManager 或 ResourceReader。
【讨论】:
感谢您的回复!在组件中包含资源是很有可能的——但据我所知,并不能解决更大的问题。它仍然不允许组件的用户“注入”他自己的本地化数据?感谢有关 ResourceManager / Reader 的提示 - 我会查一下!以上是关于从 ASP .NET 中的服务器组件访问资源的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core中如何限制响应发送速率(不是调用频率)