0
我已经定义如下的路径:ASP.NET MVC URL路由问题
context.MapRoute("SearchEngineWebSearch", "search/web/{query}/{index}/{size}",
new
{
controller = "search",
action = "web",
query = "",
index = 0,
size = 5
});
和动作的方法来处理请求匹配与该:
public System.Web.Mvc.ActionResult Web(string query = "", int index = 0, int size = 5)
{
if (string.IsNullOrEmpty(query))
return RedirectToRoute("SearchEngineBasicSearch");
var search = new Search();
var results = search.PerformSearch(query, index, size);
ViewData["Query"] = query;
if (results != null && results.Count() > 0)
{
ViewData["Results"]= results;
return View("Web");
}
else return View("Not-Found");
}
并形成到已发送的参数,以操作方法:
<% using (Html.BeginForm("Web", "Search", FormMethod.Post))
{ %>
<input name="query" type="text" value="<%: ViewData["Query"]%>" class="search-field" />
<input type="submit" value="Search" class="search-button" />
<input type="hidden" name="index" value="2" />
<input type="hidden" name="size" value="2" />
<%} %>
现在点击提交并将值发送到action方法后,所有路由值都会更新,但url值仍然是等于到第一次发送参数。例如,如果我发送第一次请求,如http://localhost/search/web/google和下次http://localhost/search/web/yahoo,传递给操作方法的查询参数是雅虎但回发后的URL仍然是http://localhost/search/web/google!
任何人都可以帮我吗? ;)
对不起,因为这会导致无限重定向!也如果我改变形式方法从发布获取,然后它生成url参数作为querystring传递,我不会那么;) – Sadegh 2010-05-29 18:33:05