我有一個這樣的方法在我的MVC項目:Html.BeginForm使用路由ID參數並獲取提交參數?
[Route("Categories/{categoryId}")]
public ActionResult List(SearchQueryCommand searchQuery) {
//Stuff
return View();
}
所以這種方法被稱爲像:'www.myweb.com/Categories/212'
但我有排序此查詢表單中的下拉列表,然後重新發送回服務器獲取排序結果。 我有這在我的Razor視圖:
@using (Html.BeginForm(new { categoryId = Model.CategoryId }))
{
<div>
<small>@Html.LabelFor(m => m.Order, "sort by")</small>
@Html.DropDownListFor(m => m.Order, Model.ProductSortByOptions, new { onchange = "this.form.submit();" })
<button class="nojs" type="submit">ok</button>
</div>
}
我的問題是,我不知道如何格式化我的代碼在我的網址是這樣的:'www.myweb.com/Categories/213?Order=MinPrice'
。
我有什麼選擇來執行此操作?
只是爲了澄清,這*可以用'Html.BeginForm'來完成,你只需要在表單方法之前填入所有參數,即:'Html.BeginForm(「List」,「YourController」,new {categoryId = Model.CategoryId },FormMethod.Get)'。當然,我通常採取與你在這些場景中做的相同的路徑,因爲它不那麼艱難,儘管你不需要Url.Action()位:'action =「」'也可以。 –
它不會以這種方式工作......因爲它會生成一個URL,如:'www.myweb.com/YourController/List?categoryId = 123'',該URL不會與我的路由配置一起工作:'' [Route(「List/{categoryId」)]' –
如果您使用的是屬性路由,您應該在'RouteConfig.cs'中註釋掉或刪除默認路由。然後,它會工作。 –