這是因爲你一定會知道的默認路由:使用Html.BeginForm()的定製路由
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Start", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
比方說,我這樣使用BeginForm()方法:
@using (Html.BeginForm("MyAction", "MyController", new { id = 4 }))
這將呈現以下表單標籤:
<form method="post" action="/MyController/MyAction/4">
現在,讓我們說,我做了一個自定義路由:
routes.MapRoute(
"MyCustomRoute", // Route name
"MyController/{id}/{action}", // URL with parameters
new { controller = "MyController", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
當我創建一個表單我想它看起來就像這樣:
<form method="post" action="/MyController/4/MyAction">
但是,如果我用BeginForm()如上面的例子中,我將獲得相匹配的一個url改爲默認路線。 有沒有辦法告訴BeginForm()使用我的自定義路線,而不是默認的創建動作的url時?或者BeginForm()總是會產生遵循默認路由模式的url嗎?
我使用asp.net mvc 3,如果它很重要。