Url路由帮助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/
响应:"主页"、"索引"

但是;

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 }
        );

最新更新