我在Global.asax.cs中配置的路由是这样的:问题的给予id来动作
routes.MapRoute("Post", "Post/Show/{PostId}", new { controller = "Post", action = "Show" });
,这是所使用的控制器的动作与预览:
public partial class PostController : Controller
{
public ActionResult Show(int PostId)
{
...
}
}
的问题是,它选择显示()动作以使用,但它没有给出int值,为此它给null.Here是我用URL的一个示例:../邮政/显示/ 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" });
第二航线“邮报”的失败。 为什么?!
顺序应该永远是特殊到一般。 'Post/Show/1232123'将始终与'{controller}/{action}/{page}'匹配完全相同的模式。你可以始终把路线本身路由约束从匹配剔除不必要的路线,但没有理由(根据您以上途径),你甚至需要交换他们。 – Buildstarted
根据您的时间线路线。该路线基本上将作为您的默认路线。那是你要的吗?任何对“http:// site.com /'的请求都将与您的时间轴路线相匹配。 – Buildstarted
不,我不希望这样,我已经设置defoult路线: routes.MapRoute( “家”, “”,新{控制器= “家”,行动= “索引”}); – kr85