区域路线被忽略?

时间:2012-02-28 23:30:49

标签: asp.net asp.net-mvc-3 routes

我有这些路线:

routes.MapRoute(
    "Advertisers",
    "advertisers/{controller}/{action}/{id}",
    new { controller = "Index", action = "Index", id = UrlParameter.Optional },
    new string[] { "Portal.Areas.Advertisers.Controllers" }
);

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

但是每当我去/ advertisers / controller / action / id时,它都没有读取id参数......我做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

我建议你看看Route Debugger

nuget install

  

PM> Install-Package routedebugger

将它安装到项目中之后,将这一行代码放在应用程序启动方法中,然后点击你正在调试的url。

protected void Application_Start()
{
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}

这将告诉您路线无法正常工作的原因。

至于您的实际问题,您的Controller实际上是IndexController吗?因为这对我来说似乎不对

public class IndexController : Controller
{

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

}

我的假设是你实际上有HomeControllerAdvertiserController之类的东西,如果是这样的话,你应该有类似的东西

routes.MapRoute(
    "advertisers_default", // Route name
    "advertisers/{controller}/{action}/{id}/{advertiserName}", // URL with parameters
    new { controller = "Home", 
          action = "Index", 
          advertiserName = UrlParameter.Optional },
    new { id = "[0-9]+",
          controller = "[a-zA-Z]+",
          action = "[a-zA-Z]+" }
);

然后点击网址http://example.com/advertisers/ {id} / {advertiser-name}

简单地说,这个网址看起来不对我

  

/广告商/控制器/动作/ {ID}

     

应该是
  的 /广告客户/家庭/ {ID}

     

甚至是   的 /广告客户/家庭/ {ID} / {广告客户名称}