我正在尝试确定如何将/ News / 5的路由映射到我的新闻控制器.
这是我的NewsController:
public class NewsController : BaseController { // // GET: /News public ActionResult Index(int id) { return View(); } }
这是我的Global.asax.cs规则:
routes.MapRoute( "News",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "News",action = "Index",id = -1 } // Parameter defaults );
我尝试去/新闻/ 5,但是我收到一个资源没有找到错误,但是当/新闻/索引/ 5它的工作?
我试过只是{controller} / {id},但这只是产生了同样的问题.
谢谢!
解决方法
您的{controller} / {id}路由是正确的,但是在其他路由之后您可能会注册它.在路线列表中,它搜索自上而下,找到第一个匹配的胜利.
为了帮助引导路由,我建议为此创建路由约束,以确保控制器存在#1,#2 {id}是一个数字.
主要是:
routes.MapRoute( "Index Action",// Route name "{controller}/{id}",// URL with parameters EDIT: forgot starting " new { controller = "News",action = "Index" },new {id= @"\d+" } );