我在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