0

これは、物件詳細ページ用に現在生成されている URL です。

http://localhost:61346/Property/Details?strap=0001020005

これは読んでほしい

http://localhost:61346/Property/Details/0001020005

以下は私の登録ルートです。これは MVC3 で簡単にセットアップできますか? この形式の「RegisterRoutes」をセットアップする方法を説明するための追加ポイント

http://localhost:61346/Property/0001020005 <--単にアクション名を非表示にします

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


            routes.MapRoute(
                   "Property", // Route name
                   "{controller}/{action}/{ParcelId}", // URL with parameters
                   new { controller = "Property", action = "List", ParcelId = UrlParameter.Optional } // Parameter defaults
               );

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

            routes.MapRoute(
"Details", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Property", action = "Details" } // Parameter defaults
);         


        }
4

2 に答える 2

1

URLを少しわかりやすくマッピングするには、URLの値をアクションメソッドのパラメータにマッピングする必要があります。を使用しているのでstrap、「プロパティ」ルートのように、それをマップするルートが必要です。

routes.MapRoute( 
    "PropDetails", // Route name 
    "{controller}/{action}/{strap}", // URL with parameters 
    new { controller = "Property", action = "Details" }
);

ただし、ルートは定義した順序で使用されることに注意してください。したがって、あなたがリストしたものでは、それらすべてをキャッチするので、実際に使用されることはありませんDefault。代わりに、次のようなものが必要になる場合があります。DetailsProperty

routes.MapRoute( 
    "PropDetails", // Route name 
    "Property/Details/{strap}", // URL with parameters 
    new { controller = "Property", action = "Details" }
);

これにより、一致/Property/Details/{strap}するルートのみが影響を受け(URLの例のように)、。で誤検知が発生することはありません/Something/Else/

{id}についての質問に答えるために、それはルートで定義されているものにすぎません。{strap}など、好きな名前を付けることができます。ただし、アクションメソッドを書き直してを受け入れるようstring IDにすると、ルートを変更せずにクエリ文字列が失われます。

public ActionResult Details (string id) { ... }  // Don't have to modify your routes
public ActionResult Details (string strap) { ... } // Have to modify your routes to remove the querystring
于 2012-05-21T20:54:04.377 に答える
1

Detailsおよびルートを削除し、およびアクション メソッドを引数として受け入れるようにProperty変更すると、デフォルト ルートはその形式を取得する必要があります。ルートがデフォルト ルートと競合しています。DetailsListstring idProperty

希望する形式は、デフォルト ルートと互換性があります。これを処理できるように引数名を変更するだけです。

public ActionResult Details(string id){...}

public ActionResult List(string id){...}

public static void RegisterRoutes(RouteCollection routes)  {
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");    
  routes.MapRoute(
                 "Default", // Route name
                 "{controller}/{action}/{id}", // URL with parameters
                 new { controller = "Home", action = "Index", id =UrlParameter.Optional  
                 });
}
于 2012-05-21T20:28:07.907 に答える