动态解析资源键

时间:2013-02-16 12:22:16

标签: c# asp.net localization

我想在运行时动态地将一个字符串(key)插入到'<%$ 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()尝试过各种各样的事情,但这并不是我想做的事。

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

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

2 个答案:

答案 0 :(得分:4)

您可以在ItemDataBound事件的Code-Behind中执行此操作。

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


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

答案 1 :(得分:1)

这对我来说在GridView中使用了其数据源的属性:

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

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

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