Как обстоят дела с параметром значений в ASP.NET MVC? - PullRequest
1 голос
/ 15 января 2009

Я вижу, что есть Controller.RedirectToAction(string actionName, string controllerName, object values), но мне никогда не удавалось заставить работать параметр values ​​. Предположим, я хочу выполнить следующую перегрузку действий в контроллере:

public ActionResult Read() 
{
    return RedirectToAction("ReadPage", "MyController", 1);
}

public ActionResult ReadPage(int page)
{
    // Doing the actual stuff 
}

… я получаю исключение, когда пытаюсь перейти к действию Read. То же самое касается Html.ActionLink.

Что с этим? Можете ли вы передавать значения в контроллеры, вообще не заходя в браузер в MVC?

1 Ответ

3 голосов
/ 15 января 2009

Попробуйте использовать:

return RedirectToAction("ReadPage", "MyController", new {page = 1});

Ему нужно знать, какой аргумент вы имеете в виду (как в более общем случае, вы можете иметь много параметров), который он может вывести из приведенного выше.

Шаблон анонимного типа (см. Выше) очень смелый в ASP.NET MVC, хотя во многих случаях Я полагаю, что вы можете также дать ему заполненный словарь, чтобы означать то же самое.

Также - в этом случае нет необходимости в двух действиях; Вы можете настроить свои маршруты для предоставления значений по умолчанию; вот некоторые, которые я отправил ранее:

    public ActionResult Search(string query, int startIndex, int pageSize)
    {
        ...
    }

с маршрутами:

    routes.MapRoute("Search", "Search/{query}/{startIndex}",
             new {
                controller = "Home", action = "Search",
                startIndex = 0, pageSize = 20
             });

Теперь, если я не предоставляю startIndex, он передает 0 в мой поиск по умолчанию. Таким образом, я могу перейти к «/ Foo» для поиска по умолчанию или «/ Foo / 100», чтобы выполнить тот же поиск, начиная с 100. В качестве альтернативы, аргументы могут быть в строке запроса и все равно будут иметь значения по умолчанию, используя значения из анонного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...