如何在父母版页中读取子页面viewbag变量

时间:2013-07-26 16:46:21

标签: asp.net-mvc

我偶然发现了这种情况,我在MVC控制器中设置了一个viewbag变量,但是无法在母版页内读取它,viewbag变量在母版页中显示为null。

我怀疑这是因为在页面控制器调用之前正在呈现母版页,但我仍然需要以某种方式向后通信。

2 个答案:

答案 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);
    }