1

なぜ私が電話した場合:

http://localhost:55058/support/Faqs

私はこれを得る:

http://localhost:55058/Products/Faqs/Faq

次の RegisterRoutes 実装で?どうすれば入手することができますか:

http://localhost:55058/Support/Faqs/Faq

ありがとう。

public class SupportController : Controller
{
    public ActionResult FAQs()
    {
        return RedirectToAction("Faq", "Faqs");
    }
}

public static void RegisterRoutes(RouteCollection routes)
{

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.IgnoreRoute("{filename}.html|js|css|gif|jpg|jpeg|png|swf");

        routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
        routes.IgnoreRoute("{resource}.html/{*pathInfo}");

        routes.MapRoute(
            "Products", // Route name
            "Products/{controller}/{action}", // URL with parameters
            new { controller = "ProductName", action = "Index" } // Parameter defaults
            );

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

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

}
4

1 に答える 1

2

もう少しデータがないとわかりにくいですが、エリアを使用しようとしているように見えますが、実際にはエリアを使用していませんか?

何が起こっているかというと、RedirectToAction("Faq", "Faqs")すべてのルートが一致しているため、この場合は最初のルートが選択されますProducts

"Products/{controller}/{action}""Support/{controller}/{action}"ルートはどう違いますか?彼らは別の場所から来ていますか?URLの先頭に関係なく、両方を同じコントローラー、同じアクションに送信しています-これは混乱しているようです.

/products/... に移動して /support/... とは異なる結果が得られる場合は、MVC Areasを調べる必要があります。

それらがあなたが現在持っているものと同じ結果を得ることになっている場合、おそらくそれらのURLを削除してデフォルトを使用することを検討する必要がありますか?

エリアに関する追加のリソースを次に示します。

  1. MSDNから
  2. Asp.netから
  3. スタック オーバーフローから

編集あなたのコメントから:

ルーティングするには:http://localhost:55058/Products/ProductName/Download

次のようにルートを更新します。

 routes.MapRoute(
            "Products", // Route name
            "Products/ProductName/{action}", // URL with parameters
            new { controller = "ProductName", action = "Index" } // Parameter defaults
            );

        routes.MapRoute(
         "Support", // Route name
         "Support/{controller}/{action}", // URL with parameters
         new { controller = "Support", action = "Index" } // Parameter defaults
         );
于 2013-03-06T13:09:48.367 に答える