我對asp.net mvc4有點新,現在試着去做一些練習。經過一些關於路由的研究,我仍然有一個問題在表單提交後傳遞參數。.net MVC4表單提交生成?而不是/在URL - 錯誤的路由?
我的形式如下:
@using (Html.BeginForm("Index", "Resplaner", FormMethod.Get, new { name = "navigation", id = "navigation" }))
{
<select name="id" size="15" id="nav_menu">
@foreach (var categorie in Model.Categories)
{
<optgroup label="@categorie.Name">
@foreach (var ressource in Model.Ressources)
{
if (@categorie.Id == ressource.Type)
{
<option value="@ressource.Id">@ressource.Name</option>
}
}
</optgroup>
}
</select>
}
這是由以下Java腳本提交:
$('#nav_menu').on('click', function (event) {
if ($(event.target).is("option")) {
var form = $(event.target).parents('form');
form.submit();
}
});
我的實際路由可配置是這樣的:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Resplaner",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Resplaner", action = "Index", id = UrlParameter.Optional }
);
所以我問題是我現在生成的URL在表單提交後看起來像這樣
http://localhost:62456/Resplaner?id=6
,但我想要的URL看起來應該是這樣的
http://localhost:62456/Resplaner/Index/6
如果我手動輸入第二個網址給我的瀏覽器,正確的結果顯示...這就是爲什麼我想有我的表單提交方式有問題。或者我的路線還在搞亂。
我已經做了關於mvc4中的窗體的一些示例教程,但他們總是用在像我這樣的不同情況。所以我會很樂意幫助你。
我感謝每一個幫助:)
問候Kurn
你沒有爲你的動作和控制器值設置'null',而是將它們放到你的'Html.BeginForm()'語句 – Tommy
中,你是對的,修正它。但我的問題仍然是:) – KURN
我的第二個評論是,你的兩條路線是完全一樣的。默認值不會導致路由引擎相互選擇一個。刪除你的第二條路線,讓我知道結果。 – Tommy