代码之家  ›  专栏  ›  技术社区  ›  Justin

什么时候可以干涉ASP.NETMVC页面的生命周期?

  •  0
  • Justin  · 技术社区  · 14 年前

    似乎ASP.NETMVC只是运行在ASP.NETWebForms之上。ASP.NET Mvc中的System.Web.Mvc.ViewPage继承自System.Web.UI.Page,后者包括OnRender和friends等页面生命周期方法。

    我在网上看到了一些评论,大意是你应该抵制不惜一切代价重写这些方法的冲动!。当然,这意味着我发现自己抵制了这样做的冲动。

    public class SslPage : ViewPage
    {
        protected override void OnPreInit(EventArgs e)
        {
            // Make sure we are using SSL
            string url = HttpContext.Current.Request.Url.ToString();
    
            if(url.StartsWith("http:"))
            {
                HttpContext.Current.Response.Redirect("https" + url.Remove(0, 4),false);
            }
    
            // Back to our regularly scheduled programming...
            base.OnPreInit(e);
        }
    }
    

    有人可能会争论把它放在一个“观点”中的纯洁性,但这似乎是非常有利的。

    重写这些方法有多危险/亵渎神明?什么时候说得通?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Dean Harding    14 年前

    您所描述的问题是,只有在控制器决定 哪一个 要渲染的视图。一开始可能会让人吃惊,但当你 OnPreInit 已经 执行。