ASP.NET MVC - 通过传递一些数据重定向到Controller / Action

时间:2009-04-19 22:27:16

标签: asp.net-mvc

我在不同的控制器中有动作,需要在执行前检查某些条件。如果不满足条件,我希望将用户重定向到另一个页面,其中包含有关下一步操作的说明(说明将包含用户必须遵循的链接)。

例如,SendMessage()操作位于Message控制器中:

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 
}

我希望在Requirements控制器中有一个名为ShowRequirements()的通用操作。

在SendMessage()操作中,我想设置要向用户显示的消息,然后将用户转发给ShowRequirements()操作。我只是不希望消息出现在ShowRequirements操作的URL中。

有没有办法将这些数据传达给ShowRequirements()动作?

2 个答案:

答案 0 :(得分:6)

你可以把它放在TempData [“message”]中,然后传递给重定向的新动作。

答案 1 :(得分:0)

好吧,我想我弄错了。正如John和Andrew所提到的,我只需要通过ViewData将数据传递给视图。

所以我在/ views / Shared中创建了RequirementsPage.aspx。现在无论我采取什么行动,我都会填写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 
}