3


0

サイトマップ/パンくずリストがデフォルトページのURLルーティングで表示されない

UrlRoutingでWebフォームサイト(4.0)をセットアップしました。 に行くとパン粉が出ます

  • http:// Localhost / Home

  • http:// Localhost / List

私の主な問題はhttp:// Localhost /にあります

IISではhttp://Localhost/default.aspxにデフォルト設定されているため

私は次のようなサイトマップxmlに別の要素を追加するルートを避けようとしています


使用するのに最適なアプローチは何ですか?

これをルーティングテーブルに追加し、xmlSiteMapProviderを使用して、それで何かできるかどうかを確認しようとしました(機能しませんでした)。

routes.MapPageRoute("IISDefault", "", "~/Default.aspx");

ここにいくつかの情報があります。

Routes
routes.MapPageRoute("Default", "Home", "~/Default.aspx");
routes.MapPageRoute("ListAll", "List", "~/ListAll.aspx");

Sitemap

XmlSiteMapProvider

   ///
    /// This is where the original sitemap node is overloaded.  We get the proper translation from the database.
    ///
    /// This is the sender of the event
    /// This is the event arguments
    /// Returns a modified SiteMapNode
    ///
    public SiteMapNode SmartSiteMapProvider_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
    {

        SiteMapNode returnValue = null;

        if ((SiteMap.CurrentNode == null))
        {
            // If we don't find a sitemap node, then we might be working with UrlRouting
            returnValue = ProcessRoute(e);
        }


        return returnValue;

    }

    private SiteMapNode ProcessRoute(SiteMapResolveEventArgs e)
    {

        SiteMapNode returnValue = null;

        System.Web.Routing.RequestContext rc = HttpContext.Current.Request.RequestContext;

        if ((rc != null))
        {
            System.Web.Routing.RouteBase route = rc.RouteData.Route;

            if ((route != null))
            {
              // Play with the node (Never getting here)
            }
        }

        return returnValue;

    }

編集:私はrouteCollectionを操作して何らかの形で一致させることができるかどうかを確認します。

1 Answer


2


の代わりに :

Routes
routes.MapPageRoute("Default", "Home", "~/Default.aspx");
routes.MapPageRoute("ListAll", "List", "~/ListAll.aspx");

Sitemap

これを試して:

Routes
routes.MapPageRoute("Default", "Home", "~/");
routes.MapPageRoute("ListAll", "List", "~/ListAll.aspx");

Sitemap

それ以外の場合、「〜/」と「〜/ Home」は同じものです。

または、上記をそのままにして、default.aspxページで次のように実行できます。

if(Page.RouteData.Values[0] == "default.aspx")
    Response.Redirect("~/Home")

これにより、デフォルトのリクエストがデフォルトのリクエストに効果的にリダイレクトされます。

あなたの問題は、サーバーが〜/ "と"〜/ Home "を2つの異なるURLとして認識し、基本的に同じURLにすることです。そのため、どちらをリダイレクトするかを決定する必要があります。

個人的にこれが私のソリューションである場合、「〜/ Home」へのルートはなく、サイトマップのベースノードは次のようになります。


「http:// yourdomain /」はホームページであり、「http:// yourdomain / Home」は何でもかまいません(あなたの家、私の家、家の甘い家、私の好きなもの)。 http:// adomain /」は、世界中のすべての人のホームページです。