我有一个基本控制器ApplicationController,需要抓取URL主机并在触发子控制器之前进行一些处理.由于在初始化RequestContext之前触发了控制器构造函数,因此我必须重写Initialize方法来进行处理.
ApplicationController:
Protected Overrides Sub Initialize(ByVal requestContext As System.Web.Routing.RequestContext)
MyBase.Initialize(requestContext)
Dim host as String
host = Request.Url.Host.ToString
End Sub
Run Code Online (Sandbox Code Playgroud)
在Initialize方法之前触发Controller Constructors的逻辑是什么?
还有什么规则应该放在Initialize Method中.
Dar*_*rov 11
假设构造函数是第一个在.NET类中被触发的实例方法,那不应该是一个惊喜,并不是MVC特有的.它更像是.NET框架的工作方式.
MVC框架需要首先实例化一个控制器,然后初始化它=>它首先调用构造函数.并且因为执行大量可能会抛出异常等的代码......并不总是最好放在构造函数中=> Initialize方法的存在.就这个方法而言,我必须承认我已经写了很多ASP.NET MVC代码而且从来没有使用它.动作过滤器似乎总是更好的选择.
所以回答你的问题:
还有什么规则应该放在Initialize Method中.
我从来没有放过任何代码,也从未需要覆盖此方法.我总是喜欢使用动作过滤器,因为这样我不再有义务从公共基本控制器派生(不是这是一个问题).
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |