是否有可能將綁定控件值的表單發送到與其網段匹配的路線。形式w /方法獲取模型參數段的匹配路線
通常情況下,當使用方法GET進行傳輸時,表單將發送到'Form?Category = cat24 & Search = sea11'。是否可以發送表單到'Form/cat24/sea11'。
配置的ASP.NET MVC路線允許這兩種方式。
示例代碼:
形式:
<form asp-action="Index" method="get">
category <input asp-for="Category" /><br />
search <input asp-for="Search" /><br />
<button type="submit">send</button>
</form>
控制器:
public class FormController : Controller
{
[HttpGet]
public IActionResult Index(SearchViewModel model)
{
var elem1 = model?.Search;
var elem2 = model?.Category;
if (elem1 != null)
model.Results.Add(elem1);
if (elem2 != null)
model.Results.Add(elem2);
// Do Search
return View(model);
}
}
模型:
public class SearchViewModel
{
public string Search { get; set; }
public string Category { get; set; }
public IList<object> Results { get; set; } = new List<object>();
}
路線配置:
routes.MapRoute(
name: "form",
template: "Form/{category?}/{search?}",
defaults: new { controller = "Form", action = "Index" });
瀏覽器對服務器上的路由定義一無所知。唯一的辦法是用戶JavaScript攔截提交併生成自己的網址 - 參考[這個答案](http://stackoverflow.com/questions/25886562/how-to-define-html-beginform-for-action-with - 屬性路由/ 40560391#40560391) –