Advanced  ASP.NET MVC Albert Weinert
MvcHtmlstringMvcHtmlString ist für HtmlHelperRückgabe-WertWird von der <%: %> Syntax nicht EncodedKein Einfluss auf <%= %>
MvcHtmlString als Rückgabe-Wertdemo
Controller-Filter-MethodenOnActionExecuting()	=> IActionFilterOnActionExecuted() => IActionFilterOnResultExecuting()	=> IResultFilterOnResultExecuted()	=> IResultFilterOnAuthorization()	=> IAuthorzisationFilterOnException()		=> IExceptionFilter05.10.2010Albert Weinert, Beratung & Entwicklung
overrideOnResultExecutingCODE
Inversion ofcontrolDependencyInjection mit IoC FrameworksStructureMapLightCoreWindsor.CastleUnityIn MVC 2 nur über ControllerFactoryWoanders muss „selbst“ injiziert werden
ControllerFactoryCODE
Eigene FilterAttributeMÜSSEN mindestens von FilterAttribute ableiten, sowie eins der I*Filter Interfaces implementierenIAuthorizationFilterIActionFilterIResultFilterIExceptionFilter08.07.2010Albert Weinert, Beratung & Entwicklung
DI bei Actionfilter und actionresultActionFilter sind AttributeKeine Ctor-Injection möglichA) Service Lookup im AttributeAttribute kennt ContainerServiceLocatorEs ist nicht Aufgabe des AttributesB) Property Injectionaber wo und wie05.10.2010Albert Weinert, Beratung & Entwicklung
ControllerIActionInvokerCreateActionInvoker()returnnewControllerActionInvoker()r08.07.2010Albert Weinert, Beratung & Entwicklung
ControllerAction.InvokeActionFindAction()action.GetFilters()InvokeAuthorizationFilter()IAuthorizationFilterInvokeActionResult()Request.ValidateInput() (optional)GetParametersValues()GetParameterValue()ModelBinderValidationInvokeActionMethodWithFilters() IActionFilterInvokeActionMethod()InvokeActionResultWithFilters()IResultFilterInvokeActionResult()Wenn Exception aufgetreten istInvokeExceptionFilters()IExceptionFilterInvokeActionResult()GetFilters()08.07.2010Albert Weinert, Beratung & Entwicklung
DependencyInjectionbyActionFilterCODE
ActionResultBasis-Klasse für alle ActionResultImplementierenHttpHeader setzen (ContentType, Encoding etc.)HttpContext.Response mit dem Ergebnis beschreiben08.07.2010Albert Weinert, Beratung & Entwicklung
ActionResult mit DI für Kalendar EinträgeCODE
Clientseite validierungHtml.EnableClientValidation()Html.BeginForm(); Html.EndForm()ModelClientValidationRuleModelValidator => DataAnnotationsModelValidator<T>Registrierung des Validators
Clientseite ValidierungCODE
ModelBinderUmwandeln der Request-Daten in ein ModelImplementiert IModelBinderobjectBindModel(ControllerContextcontrollerContext, ModelBindingContextbindingContext)Nur eine Instanz pro AnwendungDI Injection kann problematisch sein
ModelBinderCODE

Advanced ASP.NET 2 05.10.2010