advanced asp.net 2 05.10.2010

Post on 11-Jun-2015

904 Views

Category:

Self Improvement

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

ADVANCED ASP.NET MVC Albert Weinert

MVCHTMLSTRING

MvcHtmlString ist für HtmlHelper Rückgabe-Wert Wird von der <%: %> Syntax nicht

Encoded Kein Einfluss auf <%= %>

MvcHtmlString als Rückgabe-Wert

DEMO

Albert Weinert, Beratung & Entwicklung

CONTROLLER-FILTER-METHODEN

OnActionExecuting() => IActionFilter OnActionExecuted() => IActionFilter OnResultExecuting() => IResultFilter OnResultExecuted() => IResultFilter OnAuthorization()=> IAuthorzisationFilter OnException() => IExceptionFilter

05.10.2010

override OnResultExecuting

CODE

INVERSION OF CONTROL Dependency Injection mit IoC Frameworks

StructureMap LightCore Windsor.Castle Unity

In MVC 2 nur über ControllerFactory Woanders muss „selbst“ injiziert werden

ControllerFactory

CODE

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

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

Albert Weinert, Beratung & Entwicklung

CONTROLLER

IActionInvoker CreateActionInvoker() return new ControllerActionInvoker()r

08.07.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

Dependency Injection by ActionFilter

CODE

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

ActionResult mit DI für Kalendar Einträge

CODE

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

ModelClientValidationRule ModelValidator =>

DataAnnotationsModelValidator<T> Registrierung des Validators

Clientseite Validierung

CODE

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

ModelBinder

CODE

top related