Url 路由帮助 Asp.net Mvc

Url Routing Help Asp.net Mvc

我有三种 url 类型。这些:

第一个:http://localhost/
第二个:http://localhost/X/
第三个:http://localhost/X/Y/

示例Url:

http://localhost/test/
http://localhost/test/details/

第一:

routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}", 
            new
            {
                controller = "Home",
                action = "Index",
                id =  UrlParameter.Optional
            }
        );

public class HomeController : Controller
{
    // GET: /Home/

    public ActionResult Index()
    {
        return View();
    }

}

秒:

routes.MapRoute(
            "Module",
            "{module_name}/{controller}/{action}", 
            new
            {
                controller = "Module",
                action = "Index",
                module_name = UrlParameter.Optional
            }
        );

public class ModuleController : Controller
{
    //
    // GET: /Module/

    public ActionResult Index(string modul_name)
    {
        return View();
    }

}

第三个:

routes.MapRoute(
      "ModuleDetails",
      "{module_name}/{details_param}/{controller}/{action}", 
      new
      {
          controller = "ModuleDetails",
          action = "Index",
          module_name = UrlParameter.Optional,
          details_param = UrlParameter.Optional
      }
);

public class ModuleDetailsController : Controller
{
    //
    // GET: /ModuleDetails/

    public ActionResult Index(string modul_name, string details_param)
    {
        return View();
    }

}

在这种情况下;

http://localhost/X/
回应: "Home", "Index"

但是;

http://localhost/X/
响应:服务器错误中的应用程序。找不到资源。

http://localhost/X/Y/
响应:服务器错误中的应用程序。找不到资源。

我该怎么办? 谢谢,最好的问候..

http://localhost/X/ 响应:应用程序在服务器错误。找不到资源。

发生这种情况是因为您的每个路由指定了至少 2 个强制参数。

尝试添加这个:

routes.MapRoute(
            "Default",
            "{controller}/{action}", 
            new
            {
                controller = "Home",
                action = "Index"
            }
        );

没错朋友..

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

        routes.MapRoute(
            "Module",
            "{modul_name}",
            new { controller = "Modul", action = "Index", modul_name = UrlParameter.Optional }
        );

        routes.MapRoute(
            "Page",
            "{modul_name}/{page_name}",
            new { controller = "Page", action = "Index", modul_name = UrlParameter.Optional, page_name = UrlParameter.Optional }
        );