我在Global.asax.cs中配置了这样的路由:
routes.MapRoute("Post", "Post/Show/{PostId}", new { controller = "Post", action = "Show" });
这是使用控制器的预览:
public partial class PostController : Controller
{
public ActionResult Show(int PostId)
{
...
}
}
问题是它选择要使用的Show()动作,但它没有给出int值,因此它给出了null。这是我使用的URL的一个例子:../ Post / Show / 0
修改 当我像这样配置我的路线时:
routes.MapRoute("Post", "Post/Show/{id}", new { controller = "Post", action = "Show" });
routes.MapRoute("Timeline", "{controller}/{action}/{Page}", new { controller = "Timeline", action = "List" });
一切正常,但是当我按照这样配置时:
routes.MapRoute("Timeline", "{controller}/{action}/{Page}", new { controller = "Timeline", action = "List" });
routes.MapRoute("Post", "Post/Show/{id}", new { controller = "Post", action = "Show" });
第二条路线“发布”失败。 为什么?!
答案 0 :(得分:2)
你应该尝试:
routes.MapRoute("Post", "Post/Show/{PostId}", new { controller = "Post", action = "Show", PostId = UrlParameter.Optional });
答案 1 :(得分:1)
这应该只记住路线在global.asax中出现的顺序也非常重要。
routes.MapRoute(
"Post", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Post", action = "Show", id = UrlParameter.Optional } // Parameter defaults
)