ASP.NET MVC - перенаправление на контроллер / действие путем передачи некоторых данных - PullRequest
1 голос
/ 20 апреля 2009

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

Например, действие SendMessage () находится в контроллере сообщений:

public ActionResult SendMessage()
{
    // check if user has enough credit
    if (!hasEnoughCredit(currentUser))
    {
        // redirect to another page that says:

        // "You do not have enough credit. Please go to LinkToAddCreditAction
        // to add more credit."
    }

    // do the send message stuff here 
}

Я хочу, чтобы одно общее действие под названием ShowRequirements () находилось в контроллере требований.

В действии SendMessage () я хотел бы установить сообщение, которое я хочу показать пользователю, а затем перенаправить его в действие ShowRequirements (). Я просто не хочу, чтобы сообщение отображалось в URL-адресе действия ShowRequirements.

Есть ли способ передать эти данные в действие ShowRequirements ()?

Ответы [ 2 ]

6 голосов
/ 20 апреля 2009

Вы можете поместить его в TempData ["message"], которая передается новому действию, на которое перенаправляется.

0 голосов
/ 20 апреля 2009

Ладно, думаю, я ошибаюсь. Как упоминали Джон и Эндрю, мне просто нужно передать данные через ViewData в представление.

Итак, я создал RequirementsPage.aspx в / views / Shared. Теперь в любом действии я заполняю словарь ViewData и передаю его в RequirementsPage.aspx следующим образом:

public ActionResult SendMessage()
{
    // check if user has enough credit
    if (!hasEnoughCredit(currentUser))
    {
        // redirect to another page that says:
        ViewData["key1"] = "some message";
        ViewData["key2"] = "UrlToTheAction";
        return View("RequirementsPage");
    }

    // do the send message stuff here 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...