网址路由帮助Asp.net Mvc

时间:2015-02-24 22:29:33

标签: asp.net-mvc asp.net-mvc-3 routing asp.net-mvc-routing url-routing

我有三种网址类型。这些:

首先:http://localhost/
第二:http://localhost/X/
第三名:http://localhost/X/Y/

示例网址:

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/
响应:应用程序在服务器错误。资源未找到。

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

2 个答案:

答案 0 :(得分:1)

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

这是因为您的每个路由都指定了至少2个必需参数。

尝试添加以下内容:

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

答案 1 :(得分:0)

那个正确的朋友..

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