给行动ID的问题

时间:2011-08-26 15:32:08

标签: c# asp.net asp.net-mvc-3 routing

我在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" });

第二条路线“发布”失败。 为什么?!

2 个答案:

答案 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
            )