advanced asp.net 2 05.10.2010

18
ADVANCED ASP.NET MVC Albert Weinert

Upload: albert-weinert

Post on 11-Jun-2015

907 views

Category:

Self Improvement


3 download

DESCRIPTION

Der Quelltext dazu ist hier http://github.com/DerAlbertCom/AdvancedMVC

TRANSCRIPT

Page 1: Advanced  ASP.NET 2 05.10.2010

ADVANCED ASP.NET MVC Albert Weinert

Page 2: Advanced  ASP.NET 2 05.10.2010

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

MvcHtmlString als Rückgabe-Wert

DEMO

Page 4: Advanced  ASP.NET 2 05.10.2010

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

override OnResultExecuting

CODE

Page 6: Advanced  ASP.NET 2 05.10.2010

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

ControllerFactory

CODE

Page 8: Advanced  ASP.NET 2 05.10.2010

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

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

Albert Weinert, Beratung & Entwicklung

CONTROLLER

IActionInvoker CreateActionInvoker() return new ControllerActionInvoker()r

08.07.2010

Page 11: Advanced  ASP.NET 2 05.10.2010

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

Dependency Injection by ActionFilter

CODE

Page 13: Advanced  ASP.NET 2 05.10.2010

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

ActionResult mit DI für Kalendar Einträge

CODE

Page 15: Advanced  ASP.NET 2 05.10.2010

CLIENTSEITE VALIDIERUNG Html.EnableClientValidation() Html.BeginForm(); Html.EndForm()

ModelClientValidationRule ModelValidator =>

DataAnnotationsModelValidator<T> Registrierung des Validators

Page 16: Advanced  ASP.NET 2 05.10.2010

Clientseite Validierung

CODE

Page 17: Advanced  ASP.NET 2 05.10.2010

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

ModelBinder

CODE