标题混乱了,抱歉。
webform里常定义个BasePage,继承 System.Web.UI.Page ,然后OnLoad里写上一些常用的站点配置的信息。
请问在asp.netmvc3里如何实现?我希望在每个view里都能调用SiteInfo,显示网站名称
母板页或section都可以实现
能继承Controller吗,BaseController : Controller,实现每个Controller里都有ViewBag.SiteInfo
@红尘中迷茫: 不用这么复杂啊,为什么不用一个通用的母版,在母版直接写死siteinfo,还有就是如果是全局的变量,可以用application级缓存啊,如果不写死siteinfo,还有partionview什么的,mvc3都好多机制了。能用组合不用继承,这是设计模式一个规则。
一般 都会自己建个BaseController
,你的 需求是 设置 每个页面的 title? 那只要给 <title>标签赋值即可
不止是设置title,我想全局使用网站设置信息,比如网站名,网址,电话,邮件等。现在解决方法是在每个Controller方法里都绑定上ViewBag.SiteInfo...这样很麻烦,想找个可以继承的方法只需写一次ViewBag..
建个 BaseController
重写 OnActionExecuting就可以了
public class BaseController : Controller { protected override void OnActionExecuting(ActionExecutingContext filterContext) { Models.ConfigRepository config = new Models.ConfigRepository(); Models.Config configInfo = config.Get(); filterContext.Controller.ViewBag.SiteInfo = configInfo; base.OnActionExecuting(filterContext); } }
我是这样写的,但是页面调用ViewBag.SiteInfo还是null
@红尘中迷茫: 我是这样写的
ViewData.Add("SiteInfo",configInfo)
同问,如何解决了