@using (Ajax.BeginForm("Search", "Filter", new { Area = "Music" }, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "body-wrapper", OnSuccess = "updateHistory" }, new { @id = "search" }))
{
<div>
<i class="fa fa-search"></i>
<input id="searchString" name="searchString" type="search" placeholder="Search">
</div>
}
context.MapRoute(
"Music_default",
"Music/{controller}/{action}/{category}",
defaults: new { controller = "Home", action = "Index", category = UrlParameter.Optional }
);
全球航線配置:
routes.MapRoute(
name: "Default",
url: "{area}/{controller}/{action}/{category}",
defaults: new { area = "Music", controller = "Home", action = "Index", category = UrlParameter.Optional }
).DataTokens.Add("area", "Music");
控制器:
public ActionResult Search(string searchString)
{
//Do search stuff
}
每當用戶類型到搜索輸入並提交它的網址是一直s:/Music/Filter/Search
,而不是/Music/Filter/Search/{queryStringHere}
。
如何顯示用戶輸入到網址的查詢? searchString綁定正確,但只是不顯示在網址中。
下面是我在該地區註冊都試過了,但它不映射到這一個由於某種原因:
context.MapRoute(
"Music_Search",
"Music/Filter/Search/{searchString}",
defaults: new { controller = "Filter", action = "Search" }
);
這裏是生成的URL根據RouteDebugger當我在搜索項中鍵入「小龍女「:
生成的URL:/用戶/過濾/搜索搜索字符串=女僕& X-要求,隨着= XMLHttpRequest的& _ = 1462458566832
編輯: RouteDebugger圖像,它不調用正確的路由配置,因爲它似乎並沒有查詢字符串追加到的RouteData:
哪個版本的MVC是這樣的? – nurdyguy
@nurdyguy 5.2.3.0 –
由於你是5或以上,如果可能的話,我建議使用屬性路由而不是路由配置。這是一個完整的方面說明,可能不會解決這個問題,但從長遠來看,你會好得多。 https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/ – nurdyguy