【问题标题】:Dynamically resolve a resource key动态解析资源键
【发布时间】:2013-11-14 16:22:26
【问题描述】:

我想在运行时动态地将字符串(键)插入到'<%$ 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")%>' %>'/>

但这并不完全编译。我不确定您是否可以嵌套 &lt;%%&gt; 语句,所以这就是我在这里问的原因。 我还用GetGlobalResourceObject() 尝试了各种方法,但这也不是我想要的。

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

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

【问题讨论】:

  • 单引号破坏了语句:'' %>',我猜你不需要再将 '
  • @Neha 我得到“找不到带有键 '#Eval("myprop")' 的资源对象。”似乎 eval 没有被编译,它被解释为文字字符串..还有其他想法吗?已经谢谢你了。

标签: c# asp.net localization


【解决方案1】:

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

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


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

【讨论】:

  • 我最终做了这样的事情。仍然没有找到一种方法来动态评估 .ASPX 页面中的资源键:/.
  • 什么是“SupertextCommon.Default”?
  • 获取“找不到任何适合指定区域性或中性区域性的资源。确保“Resources.BF_Resources.resources”在编译时正确嵌入或链接到程序集“AEWebClient”中,或者所需的所有附属程序集都是可加载和完全签名的。”错误
【解决方案2】:

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

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

您也可以使用连接来构建密钥,例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多