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