asp.net mvc3 में, प्राधिकरण फ़िल्टर मॉडल बाध्यकारी से पहले निष्पादित होते हैं, बाद में नहीं (नीचे कोड देखें)।
मॉडल बाध्यकारी फ़िल्टर से पहले होता है क्योंकि ActionExecutingContext (IActionFilter.OnActionExecuting का पैरामीटर) में क्रिया के पैरामीटर होते हैं। शायद वे आलसी उन पैरामीटर लोड किया जाना चाहिए।
निम्न कोड System.Web.Mvc.ControllerActionInvoker से है।
public virtual bool InvokeAction(ControllerContext controllerContext, string actionName)
{
// code removed for brevity
try
{
// Notice the authorization filters are invoked before model binding
AuthorizationContext authContext = InvokeAuthorizationFilters(controllerContext, filterInfo.AuthorizationFilters, actionDescriptor);
if (authContext.Result != null) {
// the auth filter signaled that we should let it short-circuit the request
InvokeActionResult(controllerContext, authContext.Result);
}
else {
if (controllerContext.Controller.ValidateRequest) {
ValidateRequest(controllerContext);
}
// GetParameterValues does the model binding
IDictionary<string, object> parameters = GetParameterValues(controllerContext, actionDescriptor);
ActionExecutedContext postActionContext = InvokeActionMethodWithFilters(controllerContext, filterInfo.ActionFilters, actionDescriptor, parameters);
InvokeActionResultWithFilters(controllerContext, filterInfo.ResultFilters, postActionContext.Result);
}
}
// code removed for brevity
}