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