动态解析资源密钥

本文关键字:密钥 资源 动态 | 更新日期: 2023-09-27 17:59:52

我想在运行时动态地将一个字符串(键)插入到'<%$ Resources:resFile, someKey %>'语句中。

现在我有这个:

 <asp:Label runat="server" id="lbl" Text='<%$ Resources:resFile, someKey %>'/>

这对我来说毫无用处,因为密钥"someKey"是静态的,并且总是收敛到相同的x个翻译。

我试过这样做:

 <asp:Label runat="server" id="lbl" Text='<%$ Resources:resFile, '<%#Eval("someProperty")%>' %>'/>

但这并不能完全编译。我不确定您是否可以嵌套<%%>语句,所以这就是我在这里询问的原因。我也尝试过GetGlobalResourceObject()的各种功能,但这也不能满足我的要求。

问题是,我正在将一个列表绑定到一个中继器,数据源中的一个项将包含与资源文件中的键匹配的键。

如果有人知道如何实现这一点,无论是使用嵌套的<%%>语句还是其他任何方式,我都很乐意尝试。

动态解析资源密钥

您可以在ItemDataBound事件的代码隐藏中执行此操作。

Label lv = (Label)e.Item.FindControl("lbl");

ResourceManager resMngr = new ResourceManager(typeof(SupertextCommon.Default));
lv.Text = resMngr.GetObject(someProperty, culture);

这在GridView中使用了它的数据源属性

<%# GetGlobalResourceObject("Resource", Eval("SomeProperty").ToString()) %>

您也可以使用串联来构建密钥,例如:

<%# GetGlobalResourceObject("Resource", "SomePrefix" & Eval("SomeProperty").ToString()) %>