1

我创建了一个 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")主layot页面,它对我不起作用..

我的问题是每次调用时都可以在主布局页面中获取 arrList 。

任何指导和帮助表示赞赏..!

4

1 回答 1

0

好吧,如果你在每个视图中都有这个键,ViewBag你可以在布局页面上阅读。你可以创建自己的基控制器,它继承自Controller类并覆盖OnActionExecuting方法,以填充 ViewBag 上的这个属性。在您的控制器中,您应该从这个自定义基本控制器继承,并且您将在 ViewBag 上的所有视图中获取此键,例如 asp.net mvcTitle对 ViewBag 上的属性所做的操作。样品:

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

在其他控制器中:

public class HomeController : InfoController 
{
    public ActionResult Index()
    {
        return View();
    }
}
于 2013-02-13T14:42:26.170 回答