【发布时间】:2016-05-05 14:31:07
【问题描述】:
@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
}
每当用户输入搜索输入并提交时,Url 始终为:/Music/Filter/Search,而不是 /Music/Filter/Search/{queryStringHere}。
如何显示用户在 url 中输入的查询? searchString 已正确绑定,但只是未显示在 url 中。
这是我在区域注册中尝试过的,但由于某种原因它没有映射到这个:
context.MapRoute(
"Music_Search",
"Music/Filter/Search/{searchString}",
defaults: new { controller = "Filter", action = "Search" }
);
这是当我输入搜索词'Maid'时根据RouteDebugger生成的Url:
生成的网址:/User/Filter/Search?searchString=Maid&X-Requested-With=XMLHttpRequest&_=1462458566832
编辑: RouteDebugger 图像,它没有调用正确的路由配置,因为它似乎没有将查询字符串附加到 RouteData:
【问题讨论】:
-
这是哪个版本的 MVC?
-
因为你是 5 岁或以上,如果可能的话,我建议使用属性路由而不是路由配置。这是一个完整的旁注,可能不会解决这个问题,但从长远来看,你会过得更好。 blogs.msdn.microsoft.com/webdev/2013/10/17/…
标签: c# asp.net asp.net-mvc routes