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テキストを「Resource」アイテムに設定しようとしましたが、言語を変更してもテキストは変更されません。

そのテキストを変更するにはどうすればよいですか?

4

3 に答える 3

3

メニュー項目のテキストを動的に変更したい場合は、これを試してください。

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-changing-menu-items-according-to-Cultu

于 2012-06-11T15:45:28.610 に答える