路由MyString / MyController1和MyString

时间:2012-07-17 13:23:21

标签: asp.net-mvc

我正在努力做到以下几点没有成功:

URL:

MyString/MyController1
MyString/MyController2
MyString/MyController3
MyString/

我正在使用的前三个:

routes.MapRoute(
                "MyString/MyController1", // Route name
                "MyString/MyController1/{action}/{id}", // URL with parameters
                new {controller = "MyController1", action = "Index", id = UrlParameter.Optional},
                new string[] {"Core_Web.Controllers.MyString"}
                );

并且效果非常好。当我尝试访问 MyString / 时,我的问题就出现了。 我添加了:

routes.MapRoute(
                "Default",
                "MyString",
                new { controller = "MyString", action = "Index", id = UrlParameter.Optional },
                new string[] {"Core_Web.Controllers"}
                );

但是url MyString 的调用给出了:

  

无法找到资源

     

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

     

请求的网址:/ MyString

MyString中有一个名为Core_Web.Controllers的控制器。

感谢您的帮助,

[编辑]

这是我的全部代码:

路线:

routes.MapRoute(
    "Contabilita",
    "Contabilita",
    new { controller = "Contabilita", action = "Index" },
    new string[] { "Core_Web.Controllers" }
    );

routes.MapRoute(
    "Contabilita_Controller", // Route name
    "Contabilita/{controller}/{action}/{id}", // URL with parameters
    new { action = "Index", id = UrlParameter.Optional},
    new string[] { "Core_Web.Controllers.Contabilita" }
    );

和控制器:

namespace Core_Web.Controllers
{
    public class ControllerContabilitaBase : ControllerBaseSuper
    {
       ....
    }
    public class ControllerContabilita : ControllerContabilitaBase
    {
        public ActionResult Index()
        {
            return View(GetView("Index"));
        }
    }
}

namespace Core_Web.Controllers.Contabilita
{
    public class ImpiantoController : ControllerContabilitaBase
    {
     ...
    }
    public class LottoController : ControllerContabilitaBase
    {
    ...
    }
}

但它也不起作用。带有控制器的URL工作但不是另一个。它给出了404。

我可能会忽略别的东西吗?

[/编辑]

1 个答案:

答案 0 :(得分:1)

尝试以下路线定义(按此顺序):

routes.MapRoute(
    "MyString",
    "MyString",
    new { controller = "MyString", action = "Index" },
    new string[] { "Core_Web.Controllers" }
);

routes.MapRoute(
    "MyString_Controller",
    "MyString/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional },
    new string[] { "Core_Web.Controllers" }
);

哪个应该给你以下模式:

url                  controller             action
--------------------------------------------------
/mystring            MyStringController     Index
/mystring/my1        My1Controller          Index
/mystring/my1/foo    My1Controller          Foo
/mystring/my2        My2Controller          Index
/mystring/my3        My3Controller          Index