0

現在、メニューWebコントロールを使用するWebサイトに機能を追加しています。

Webサイト内にはさまざまな役割があり、その役割に応じてさまざまなナビゲーションオプションのセットを表示する必要があります。このタスクを完了するために、ファイル名を取得するPage_Loadから呼び出されるマスターページの背後にあるコードに関数を追加しました。 (サイトマップ)をパラメーターとして使用し、htmlにあるメニューをこのソースにバインドします。

私の問題は、存在しないページに移動してから戻ると、メニューが表示されなくなることです。

この問題が発生している理由や解決策など、この問題に関する情報を教えてもらえますか。また、この問題はFirefox、Opera、ChromeのInternetExplorer9でのみ発生しているようです。

私の現在のコードは次のとおりです。

    Menu menu = new Menu();
    menu.Orientation = Orientation.Horizontal;
    menu.StaticDisplayLevels = 2;
    menu.MaximumDynamicDisplayLevels = 3;
    menu.CssClass = "menu";
    menu.EnableViewState = false;

    //configure xmldatasource
    XmlDataSource xmlDS = GetSiteMapDataSource(navigationPath);
    xmlDS.XPath = "/*/*";
    xmlDS.EnableCaching = false;

    //configure menuitembinding
    MenuItemBinding mib = new MenuItemBinding();
    mib.DataMember = "siteMapNode";
    mib.TextField = "title";
    mib.NavigateUrlField = "url";
    mib.ValueField = "title";

    //configure datasource
    menu.DataSource = xmlDS;
    menu.DataBindings.Add(mib);
    menu.DataBind();

    //add to panel
    NavigationPanel.Controls.Add(menu);  

これは現在のコードであり、css関連の情報は含まれていません。現在、XMLDataSourceではなくSiteMapDataSourceを使用しています。これは、Web構成ファイルから次の情報を使用してデータソースを選択できる可能性があるためです。

    <siteMap defaultProvider="guest">
        <providers>
            <add name="guest" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Guest.sitemap"/>
            <add name="professional" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Professional.sitemap"/>
            <add name="supplier" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Supplier.sitemap"/>
        </providers>
    </siteMap>

ありがとう、

リック。

4

1 に答える 1

0

コードは、ポストバックがない場合にのみ実行する必要があります。

If (!IsPostBack)
{
    //Your code here!
}

そうしないと、要素が削除されます。

于 2012-10-27T11:31:06.177 に答える