簡體   English   中英

ASP.Net MVC4的哪些控制器初始化功能

[英]What controller Initialize function does ASP.Net MVC4

我是MVC和學習的新手。 我在這里放一些代碼。 所以先看

public class HomeController : BaseController
    {
        private IProductRepository productRepository;
        private string strRouteValue;

        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            strRouteValue = this.ControllerContext.RouteData.Values["method"].ToString();
            this.productRepository = Factory.Create(strRouteValue);
        }

        [HttpGet]
        public ActionResult Index(int id)
        {            
            productRepository.Get(id);
            return View();
        }

        [HttpPost]
        public ActionResult Index(Product model)
        {
            productRepository.Add(model);            
            return View();
        }       
    }

什么是初始化函數?

每個人都必須說這是人們會初始化許多對象的地方,如果是這樣的話,我們也可以在控制器的構造函數中進行初始化。 那么控制器的初始化功能有什么特別之處呢?

控制器初始化函數和控制器構造函數有什么區別?

檢查該方法的文檔: MSDN: Controller.Initialize()

初始化在調用構造函數時可能不可用的數據。

此方法不能直接調用。 重寫此方法,以便在調用任何ActionResult方法之前提供其他處理任務,例如設置線程區域性或為TempData對象分配自定義提供程序。 如果重寫此方法,請調用基本控件的Initialize方法。

正如我在您先前提出的有關MVC,依賴注入和控制器實例化的大約二十個問題中所建議的那樣:停止將不良博客文章中的建議和關於SO的不相關答案拼湊在一起。 買一本不錯的MVC書,然后從頭到尾閱讀 然后對一本有關單元測試的書做同樣的事情。 如果繼續這種方式,您將永遠不會對事物有透徹的了解。

實例化控制器和初始化控制器之間是有區別的。 此外,實例化是.NET概念而非MVC,因此,每個類都使用默認構造函數自動實例化。 因此,構造函數基本上是類的概念,而初始化是動作方法的概念。 我們重寫Initialize()方法,以便在調用任何ActionResult方法之前提供其他處理任務,例如設置線程區域性或分配TempData對象等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM