Проблема маршрутизации URL ASP.NET MVC - PullRequest
0 голосов
/ 29 мая 2010

я определил маршрут, как показано ниже:

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" />
    <%} %>

теперь после нажатия на кнопку отправки и отправки значения в метод действия все значения маршрута обновлены, но значения url по-прежнему равны первому разу отправки параметра. например, если я отправил запрос в первый раз, например http://localhost/search/web/google, и в следующий раз http://localhost/search/web/yahoo, параметр запроса, который был передан в метод действия, - это yahoo, но URL после обратной передачи - http://localhost/search/web/google все еще! 1016 *

Кто-нибудь может мне помочь, плз? ;)

1 Ответ

1 голос
/ 29 мая 2010

Попробуйте что-то вроде

return RedirectToAction("Web", 
   new { query = query, index = index, size = size}); 

вместо return View("Web");.

Кроме того, обратите внимание, что вы должны выполнить GET вместо POST. И параметры index и size могут быть пропущены, если они были отправлены со значениями по умолчанию.

...