我偶然发现了这种情况,我在MVC控制器中设置了一个viewbag变量,但是无法在母版页内读取它,viewbag变量在母版页中显示为null。
我怀疑这是因为在页面控制器调用之前正在呈现母版页,但我仍然需要以某种方式向后通信。
答案 0 :(得分:1)
我100%同意@Chase Florell但是直接回答你的问题,我相信你可以使用ViewContext.Viewbag
答案 1 :(得分:0)
如果没有进一步了解您的业务逻辑,我可能会离开这里......但是......似乎在View中设置任何ViewBag数据都是Anti-Pattern。
当View被呈现为页面生命周期的一部分时,您的ViewModel
应该拥有它所需的一切,而View和Masterpage应该只使用数据,而不是生成它。 / p>
我也是设置ViewModel
而不是ViewBag中的所有相关视图的公司信徒(这是个人偏好,但是被广泛接受)。
如果您进一步描述您的具体情况,也许我可以帮助您想出更好的模式。
public class LayoutViewModel
{
public bool UseFacebookConnect { get; set; }
}
public class SomeViewModel : LayoutViewModel
{
public string SomeData { get; set; }
}
public class SomeController : Controller
{
public ActionResult Index()
{
var someViewModel = new SomeViewModel
{
SomeData = "",
UseFacebookConnect = true
};
return View(someViewModel);
}