2

我有一个这样的 ASP 菜单:

<asp:Menu ID="NavigationMenu" runat="server" 
 EnableViewState="False" IncludeStyleBlock="False"
 Orientation="Horizontal" meta:resourcekey="NavigationMenuResource1">
       <Items>
             <asp:MenuItem NavigateUrl="~/Default.aspx" Text="<% MenuItemResource1 %>" meta:resourcekey="MenuItemResource1"/>
             <asp:MenuItem NavigateUrl="~/Products.aspx" Text="Products" meta:resourcekey="MenuItemResource2" />
       </Items>
</asp:Menu>

我想要做的是根据用户语言选择(CultureInfo)更改 MenuItem 文本。例如,“产品”部分在法语中应称为“产品”。

我为英语和法语添加了一个 .resx 文件。如果我使用带有 Id 的 < div> 元素,则可以正常工作。问题是 asp MenuItem 似乎没有 ID,所以我无法访问它。像示例一样,我尝试将第一个 MenuItem 文本设置为“资源”项,但是当我更改语言时,文本并没有改变。

如何更改该文本?

4

3 回答 3

3

If you want to change the Menu Item Text Dynamically, Try this.

Menu1.Items[0].Text="Home"; // For Text
Menu1.Items[0].NavigateUrl="~/Default.aspx"; // For Url
于 2012-09-12T08:32:58.430 回答
0

在页面加载时,您设置文本,导航 url

NavigationMenu.Items.Add(new MenuItem
        {
            Text = "Your text goes here",
            NavigateUrl = "Your URL goes here"
        });
于 2012-06-11T15:44:28.557 回答
0
    System.Reflection.FieldInfo[] fi = 
    this.GetType().GetFields(BindingFlags.Public | 
    BindingFlags.Instance | BindingFlags.NonPublic);

for (int i = 0; i < fi.Length; ++i)
{
    FieldInfo info = fi[i];

    //info can be Button, Menuitem, ToolbarButton.....
    //info.Name returns true name of control
    //        - menuItem1, btnChangelanguage....
    if (typeof(MenuItem) == info.FieldType)
    {
        MenuItem item = (MenuItem)info.GetValue(this);
        item.Text = resources.GetString(info.Name + ".Text");
    }
}

http://www.codeproject.com/Articles/14615/Dynamically-changed-menu-items-according-to-Cultu

于 2012-06-11T15:45:28.610 回答