将母版页代码放在MVC应用程序中的哪里?
时间:2020-03-05 18:52:42 来源:igfitidea点击:
我在ASP.NET MVC应用程序中使用了几个(2或者3个)母版页,它们每个都必须显示数据库中的信息。例如赞助商列表,当前资金状况等。
所以我的问题是,应该将这些母版页数据库调用代码放在哪里?
通常,这些应该进入自己的控制器类,对吗?但这意味着我必须手动将它们连接起来(例如传递ViewDatas),因为它超出了MVC框架提供的常规路由框架。
有没有一种方法可以干净地实现,而无需将ViewData pass / Action调用手动连接到母版页或者将框架的子类化?
文档数量非常少...而且我对所有这些都是新手,包括MVC本身的概念,因此,请就此分享技巧/技术。
解决方案
回答
一种方法是在母版页视图中放入ViewData的钩子,然后定义一个BaseController:Controller(或者多个基类),在其中执行所需的所有数据库调用。
我们要执行的操作与本文中描述的完全相同。
我希望这有帮助!
问候
回答
如果我们不介意使用强类型的视图数据,则可以将所有母版页数据放在viewData的通用基类中。我们可以在基类的构造函数中设置此数据。然后,所有需要其他数据的视图都将需要从该基类继承的强类型视图数据。
要允许在没有任何显式viewdata的情况下调用控制器中的View(),可以在ControllerBase中重写View:
protected override ViewResult View(string viewName, string masterName, object model) { if (model == null) { model = new ViewDataBase(); } return base.View(viewName, masterName, model); }
回答
好问题。我们有几种选择。
- 在母版页上进行jQuery调用,以从控制器中获取所需的数据,然后再次使用jQuery填充字段。
- 第二个选择是创建用户控件,这些控件自己调用控制器以填充其信息。
我认为最好的选择是为母版页的区域创建控件,该控件具有需要填充的数据。因此,使母版页严格包含设计元素。祝你好运。