advanced asp.net 2 05.10.2010
DESCRIPTION
Der Quelltext dazu ist hier http://github.com/DerAlbertCom/AdvancedMVCTRANSCRIPT
![Page 1: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/1.jpg)
ADVANCED ASP.NET MVC Albert Weinert
![Page 2: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/2.jpg)
MVCHTMLSTRING
MvcHtmlString ist für HtmlHelper Rückgabe-Wert Wird von der <%: %> Syntax nicht
Encoded Kein Einfluss auf <%= %>
![Page 3: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/3.jpg)
MvcHtmlString als Rückgabe-Wert
DEMO
![Page 4: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/4.jpg)
Albert Weinert, Beratung & Entwicklung
CONTROLLER-FILTER-METHODEN
OnActionExecuting() => IActionFilter OnActionExecuted() => IActionFilter OnResultExecuting() => IResultFilter OnResultExecuted() => IResultFilter OnAuthorization()=> IAuthorzisationFilter OnException() => IExceptionFilter
05.10.2010
![Page 5: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/5.jpg)
override OnResultExecuting
CODE
![Page 6: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/6.jpg)
INVERSION OF CONTROL Dependency Injection mit IoC Frameworks
StructureMap LightCore Windsor.Castle Unity
In MVC 2 nur über ControllerFactory Woanders muss „selbst“ injiziert werden
![Page 7: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/7.jpg)
ControllerFactory
CODE
![Page 8: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/8.jpg)
Albert Weinert, Beratung & Entwicklung
EIGENE FILTERATTRIBUTE
MÜSSEN mindestens von FilterAttribute ableiten, sowie eins der I*Filter Interfaces implementieren IAuthorizationFilter IActionFilter IResultFilter IExceptionFilter
08.07.2010
![Page 9: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/9.jpg)
Albert Weinert, Beratung & Entwicklung
DI BEI ACTIONFILTER UND ACTIONRESULT
ActionFilter sind Attribute Keine Ctor-Injection möglich A) Service Lookup im Attribute
Attribute kennt Container ServiceLocator Es ist nicht Aufgabe des Attributes
B) Property Injection aber wo und wie
05.10.2010
![Page 10: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/10.jpg)
Albert Weinert, Beratung & Entwicklung
CONTROLLER
IActionInvoker CreateActionInvoker() return new ControllerActionInvoker()r
08.07.2010
![Page 11: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/11.jpg)
Albert Weinert, Beratung & Entwicklung
CONTROLLERACTION.INVOKEACTION FindAction()
action.GetFilters() InvokeAuthorizationFilter()
IAuthorizationFilter InvokeActionResult()
Request.ValidateInput() (optional)
GetParametersValues() GetParameterValue()
ModelBinder Validation
InvokeActionMethodWithFilters() IActionFilter InvokeActionMethod()
InvokeActionResultWithFilters() IResultFilter InvokeActionResult()
Wenn Exception aufgetreten ist
InvokeExceptionFilters() IExceptionFilter InvokeActionResult()
GetFilters()
08.07.2010
![Page 12: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/12.jpg)
Dependency Injection by ActionFilter
CODE
![Page 13: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/13.jpg)
Albert Weinert, Beratung & Entwicklung
ACTIONRESULT
Basis-Klasse für alle ActionResult Implementieren
HttpHeader setzen (ContentType, Encoding etc.) HttpContext.Response mit dem Ergebnis
beschreiben
08.07.2010
![Page 14: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/14.jpg)
ActionResult mit DI für Kalendar Einträge
CODE
![Page 15: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/15.jpg)
CLIENTSEITE VALIDIERUNG Html.EnableClientValidation() Html.BeginForm(); Html.EndForm()
ModelClientValidationRule ModelValidator =>
DataAnnotationsModelValidator<T> Registrierung des Validators
![Page 16: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/16.jpg)
Clientseite Validierung
CODE
![Page 17: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/17.jpg)
MODELBINDER Umwandeln der Request-Daten in ein Model Implementiert IModelBinder
object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
Nur eine Instanz pro Anwendung DI Injection kann problematisch sein
![Page 18: Advanced ASP.NET 2 05.10.2010](https://reader036.vdocuments.pub/reader036/viewer/2022082513/55795ac8d8b42ab6648b4e5e/html5/thumbnails/18.jpg)
ModelBinder
CODE