我已经创建了一个xml文件(layout.xml)来将其内容呈现给布局页面
Action LoadPage用于反序列化此xml。
var ser = new XmlSerializer(typeof(MyModel));
string path = Server.MapPath(Url.Content("~/LayoutConfig/layout.xml"));
var arrList = (MyModel)ser.Deserialize(File.OpenRead(path));
如何将arrList传递给mvc主布局页面。
我尝试设置ViewBag.Data = arrList;
它仅适用于特定的控制器操作
我知道ViewBag实际上只是一个围绕ViewData对象的包装器,其目的是使用动态来访问数据而不是使用魔术字符串
我尝试了一个肮脏的黑客,即@Html.Action("LoadPage","Main")
到主要的分页页面,它不适合我..
我的问题是每次调用时都可以在主布局页面中获取arrList。
感谢任何指导和帮助..!
答案 0 :(得分:0)
好吧,如果您在ViewBag
上的每个View中都有这个键,您可以在Layout页面上阅读。,您可以创建自己的基本控制器,它继承自Controller
类并覆盖{{1方法,在ViewBag上填充此属性。在您的控制器中,您应该从这个自定义基本控制器继承,并且您将在ViewBag的所有视图中获取此键,例如asp.net mvc在ViewBag上具有OnActionExecuting
属性。样本:
Title
在其他控制器中:
public class InfoController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var ser = new XmlSerializer(typeof(MyModel));
string path = Server.MapPath(Url.Content("~/LayoutConfig/layout.xml"));
var arrList = (MyModel)ser.Deserialize(File.OpenRead(path));
ViewBag.ArrayInfo = arrList;
base.OnActionExecuting(filterContext);
}
}