2013-02-13 60 views
1

我创建了一个XML文件(layout.xml)来渲染其内容页面布局,如何数组/模型对象传递给主布局

行动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在主布局页面每次调用时间。

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

回答

0

好吧,如果你在每一个观ViewBag这个键,你可以在布局网页上阅读,你可以创建自己的基本控制器从Controller类继承并重写OnActionExecuting方法,以填补ViewBag这个属性。在你的控制器中,你应该继承这个自定义的基础控制器,你会得到所有视图这个ViewBag上的Key,例如asp.net mvc在ViewBag上的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); 
    } 
} 

而在其他控制器:

public class HomeController : InfoController 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 
+0

感谢您的解释.. – super 2013-02-14 04:08:15

相关问题