我有这些路线:
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参数......我做错了什么?
由于
答案 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();
}
}
我的假设是你实际上有HomeController
或AdvertiserController
之类的东西,如果是这样的话,你应该有类似的东西
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} / {广告客户名称} 强>