代码之家  ›  专栏  ›  技术社区  ›  Denis Hoctor

是否可以访问在ASP.NET MVC的母版页中的视图上定义的对象?

  •  1
  • Denis Hoctor  · 技术社区  · 15 年前

    所以我的MVC项目中有一个创建JSON数组的部分。出于速度方面的考虑,我想将这一堆代码从HTML页面主体的顶部移动到底部,并将其余的JS一起移动。也就是说,我希望将创建为字符串的JSON存储在C中,并在site.master上访问它。

    这里最好的选择是什么?

    谢谢, 丹尼斯

    4 回复  |  直到 15 年前
        1
  •  2
  •   Guillaume Roy    15 年前

    当我需要访问母版页中的信息时,我会创建一个basecontroller并在我的viewdata中设置信息:

    public abstract class BaseController : Controller
    {
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
    
            ViewData["JSonObject"] = "json string";
        }
    }
    

    只需从basecontroller继承所有的控制器,它就会工作。

    包括masterpage在内的所有视图现在都可以访问viewdata[“jsonObject”]!

        2
  •  0
  •   Mathias F    15 年前

    只需在主页中调用renderpartial

        3
  •  0
  •   Jon Benedicto    15 年前

    使用VIEWDATA在视图之间传递信息。

    在你的部分:

    ViewData["JsonString"] = ".....";
    

    在母版页中:

    <%= ViewData[ "JsonString" ] %>
    
        4
  •  0
  •   Denis Hoctor    15 年前

    似乎viewdata只是自上而下的。因此,如果在parals父对象或控制器中指定一个值,该值将起作用,但不会反过来。我设法让它使用context.item工作。

    context.items[“jsonFeatures”]=“测试”;部分 context.items[“jsonFeatures”].toString();位于masterpage上

    希望这能帮助别人。我不确定这是否是最佳实践,但它确实有效,我知道得更好!