首页 新闻 赞助 找找看

asp.netmvc3如何实现类似webForm定义基类重写OnLoad

0
悬赏园豆:10 [待解决问题]

标题混乱了,抱歉。

webform里常定义个BasePage,继承  System.Web.UI.Page ,然后OnLoad里写上一些常用的站点配置的信息。

请问在asp.netmvc3里如何实现?我希望在每个view里都能调用SiteInfo,显示网站名称

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2013-03-26 12:45
< >
分享
所有回答(4)
0

母板页或section都可以实现

arg | 园豆:1047 (小虾三级) | 2013-03-26 12:49

能继承Controller吗,BaseController : Controller,实现每个Controller里都有ViewBag.SiteInfo

支持(0) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2013-03-26 13:25

@红尘中迷茫: 不用这么复杂啊,为什么不用一个通用的母版,在母版直接写死siteinfo,还有就是如果是全局的变量,可以用application级缓存啊,如果不写死siteinfo,还有partionview什么的,mvc3都好多机制了。能用组合不用继承,这是设计模式一个规则。

支持(0) 反对(0) arg | 园豆:1047 (小虾三级) | 2013-03-26 17:54
0

一般 都会自己建个BaseController ,你的 需求是 设置 每个页面的 title? 那只要给 <title>标签赋值即可

Qlin | 园豆:2403 (老鸟四级) | 2013-03-26 13:34

不止是设置title,我想全局使用网站设置信息,比如网站名,网址,电话,邮件等。现在解决方法是在每个Controller方法里都绑定上ViewBag.SiteInfo...这样很麻烦,想找个可以继承的方法只需写一次ViewBag..

支持(0) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2013-03-26 15:32
0

建个 BaseController

重写 OnActionExecuting就可以了

geass.. | 园豆:1821 (小虾三级) | 2013-03-26 16:43
  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

支持(0) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2013-03-26 17:31

@红尘中迷茫: 我是这样写的

ViewData.Add("SiteInfo",configInfo)

支持(0) 反对(0) geass.. | 园豆:1821 (小虾三级) | 2013-03-27 09:18
0

同问,如何解决了

EricLeee | 园豆:168 (初学一级) | 2013-07-15 09:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册