1

asp.net mvc を使用していますが、ページにアクセスできず、404エラーが発生しました。

ページの URL :

ローカルホスト:2334/RawData/EiphoneNews

ファイルの場所を表示:

webroot/View/RawData/TNews/Index.cshtml

私のルート:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    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 } // Parameter defaults
        );

        routes.MapRoute(
           "RawData", // Route name
           "RawData/{controller}/{action}/{id}", // URL with parameters
           new { controller = "EiphoneNews", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
           new string[] { "News.Controllers.RawData" }
       );
    }




    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

私のコントローラー:

namespace News.Controllers.RawData
{
    public class EiphoneNewsController : AuthorizedController
    {
        //
        // GET: /EiphoneNews/
        public ActionResult Index(int pagenum = 0, int pagesize = 20, string queryString = null)
        {...}
    }
}
4

2 に答える 2

9

2 つのルート定義を入れ替えます。

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

    routes.MapRoute(
       "RawData", // Route name
       "RawData/{controller}/{action}/{id}", // URL with parameters
       new { controller = "EiphoneNews", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
       new string[] { "News.Controllers.RawData" }
   );


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

}
于 2012-08-17T07:00:28.333 に答える
0

ルート登録を切り替えると、最初に一致したルートではないルートが使用されRawDataます。コントローラーが解決される前にルートが決定されるため、デフォルト ルートは 404 につながりますが、ルートはそうではないことに違いはありRawDataません。

RouteDebugger パッケージ (nuget から入手可能) をインストールして、ルートがどうなるかを確認することをお勧めします。

于 2012-08-17T06:59:01.123 に答える