【发布时间】:2014-02-05 15:00:01
【问题描述】:
我试图让我的产品搜索 URL 看起来像“产品/搜索/{此处搜索词}”。
我正在使用基于属性的路由,我的控制器操作如下所示:
[HttpGet]
[Route("Products/Search/{searchTerm?}", Name="ProductSearch")]
public ActionResult Search(string searchTerm = "")
{
return View();
}
我曾尝试使用 HTML Helper for BeginForm 和 BeginRouteForm(如下所示),但都没有成功。正在调用正确的操作,但我的 URL 看起来像“Products/Search?searchTerm”
BeginRouteForm
@using (Html.BeginRouteForm("ProductSearch", new { searchTerm = "" }, FormMethod.Get, new { Class = "navbar-form navbar-right", role = "search" }))
{
<div class="form-group">
@Html.TextBox("searchTerm", null, new { Class = "form-control", placeholder = "Item # or Name" })
</div>
<button type="submit" class="btn btn-default">Search</button>
}
BeginForm
@using (Html.BeginForm("Search", "Products", new { searchTerm = "" }, FormMethod.Get, new { Class = "navbar-form navbar-right", role = "search" }))
{
<div class="form-group">
@Html.TextBox("searchTerm", null, new { Class = "form-control", placeholder = "Item # or Name" })
</div>
<button type="submit" class="btn btn-default">Search</button>
}
我已经通过调试并选择了正确的路线,但 URL 没有显示我想要的样子。我错过了什么?
【问题讨论】:
-
您看到的此请求的网址是什么?
-
我看到的是 Products/Search?searchTerm=text
-
你需要
Search(string searchTerm = "")默认值吗?尝试作为 Search(string searchTerm) 离开,因为它是 Route 中指定的可为空类型 -
感谢您的建议。我只是试了一下,结果还是一样。
标签: c# asp.net-mvc asp.net-mvc-routing asp.net-mvc-5