访问在视图中设置的Controller中的ViewBag

时间:2012-08-31 21:04:43

标签: asp.net-mvc asp.net-mvc-3

我知道我可以使用ModelBinding来做到这一点,但我想知道我是否可以使用ViewBag

我在视图

中设置了ViewBag属性
@{
ViewBag.WasPriorityCustomer = Model.PriorityCustomer == true;
}

非优先客户的用户可以更改为一个,但我需要知道他们是否是优先客户。

在控制器中

[HttpPost]
public ActionResult Save(MyModel model)
{
  if (ViewBag.WasPriorityCustomer == false && model.PriorityCustomer == true)
  {
    //Thank you for becoming a priority customer
  }
}

不幸的是ViewBag.WasPriorityCustomer始终为空

2 个答案:

答案 0 :(得分:3)

你只是试图以错误的方式做事:

您可以在操作中设置ViewBag的值,并在生成的视图中使用它的值。

但是要从POST操作中的视图中获取值,您应该使用隐藏的输入。

视图中的类似内容(未经测试):

@ {bool wasPriorityCustomer = Model.PriorityCustomer;}

@Html.Hidden("wasPriorityCustomer", wasPriorityCustomer)

和行动成为

[HttpPost]
public ActionResult Save(MyModel model, bool wasPriorityCustomer)

或者您可以更改ViewModel以包含“隐藏”值。

并使用@Html.HiddenFor(m => m.WasPriorityCustomer)

答案 1 :(得分:-1)

如果要在viewBag中存储某些值并希望在View中使用此ViewBag值,请尝试使用此代码。

模范行动

ViewBag.Test = ("NewTest");

在View中你可以写

@ViewBag.ProcedureTypeId

这样您就可以在ViewBag

中获得Viewpage