是否可以将带有绑定控件值的表单发送到与其URL段匹配的路由。
通常使用方法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" });
答案 0 :(得分:1)
我认为您想要的是不可能的,因为网址生成发生在客户端并且根据RFC1866:
处理其操作URL为HTTP URL且方法为的表单
GET', the user agent starts with the action URI and appends a
&#39;?
和表单数据集,在`application / x-www-form-urlencoded&#39;格式
如上。然后,用户代理遍历到此URI的链接,就像
一样 如果它是一个锚(参见7.2,&#34;激活超链接&#34;)。
所以似乎没有办法按你的意愿发送网址。我想到的唯一方法就是使用javascript。