我有一个Asp.Net Mvc网站,里面有一个列表控制器。路线看起来像这样:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "MySite.Web.Controllers" }
);
非常标准。现在我的列表控制器中有许多控制器操作。我希望能够转到/ listing / 84并将其转到索引操作或/ listing / create,/ listing / edit,/ listing / favorite或/ listing / others,并让它转到相应的行动。对于我的大多数路线来说,情况已经如此。这是我的控制器代码:
public ActionResult Index(long? id)
{
// my code that never gets hit
}
我错过了什么吗?
答案 0 :(得分:3)
您可以为此定义特定路线,并为ID:
定义约束routes.MapRoute(
"ActionLess",
"{controller}/{id}",
new { controller = "Home", action = "Index" },
new { id = @"^[0-9]+$" },
new string[] { "MySite.Web.Controllers" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "MySite.Web.Controllers" }
);
答案 1 :(得分:0)
您可以为它创建两条新路线
用于列出/创建用于导航创建操作
routes.MapRoute(
"listingCreate", // Route name
"listing/Create", // URL with parameters
new { controller = "listing", action = "Create" }
);
传递Id时的索引操作
routes.MapRoute(
"lisingid", // Route name
"listing/{Id}", // URL with parameters
new { controller = "listing", action = "Index", id = UrlParameter.Optional }
);
我希望,它会对你有帮助。