Advanced ASP.NET 2 05.10.2010

1,051 views
981 views

Published on

Der Quelltext dazu ist hier

http://github.com/DerAlbertCom/AdvancedMVC

Published in: Self Improvement
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,051
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
15
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Advanced ASP.NET 2 05.10.2010

  1. 1. Advanced ASP.NET MVC <br />Albert Weinert<br />
  2. 2. MvcHtmlstring<br />MvcHtmlString ist für HtmlHelper<br />Rückgabe-Wert<br />Wird von der <%: %> Syntax nicht Encoded<br />Kein Einfluss auf <%= %><br />
  3. 3. MvcHtmlString als Rückgabe-Wert<br />demo<br />
  4. 4. Controller-Filter-Methoden<br />OnActionExecuting() => IActionFilter<br />OnActionExecuted() => IActionFilter<br />OnResultExecuting() => IResultFilter<br />OnResultExecuted() => IResultFilter<br />OnAuthorization() => IAuthorzisationFilter<br />OnException() => IExceptionFilter<br />05.10.2010<br />Albert Weinert, Beratung & Entwicklung<br />
  5. 5. overrideOnResultExecuting<br />CODE<br />
  6. 6. Inversion ofcontrol<br />DependencyInjection mit IoC Frameworks<br />StructureMap<br />LightCore<br />Windsor.Castle<br />Unity<br />In MVC 2 nur über ControllerFactory<br />Woanders muss „selbst“ injiziert werden<br />
  7. 7. ControllerFactory<br />CODE<br />
  8. 8. Eigene FilterAttribute<br />MÜSSEN mindestens von FilterAttribute ableiten, sowie eins der I*Filter Interfaces implementieren<br />IAuthorizationFilter<br />IActionFilter<br />IResultFilter<br />IExceptionFilter<br />08.07.2010<br />Albert Weinert, Beratung & Entwicklung<br />
  9. 9. DI bei Actionfilter und actionresult<br />ActionFilter sind Attribute<br />Keine Ctor-Injection möglich<br />A) Service Lookup im Attribute<br />Attribute kennt Container<br />ServiceLocator<br />Es ist nicht Aufgabe des Attributes<br />B) Property Injection<br />aber wo und wie<br />05.10.2010<br />Albert Weinert, Beratung & Entwicklung<br />
  10. 10. Controller<br />IActionInvokerCreateActionInvoker()<br />returnnewControllerActionInvoker()r<br />08.07.2010<br />Albert Weinert, Beratung & Entwicklung<br />
  11. 11. ControllerAction.InvokeAction<br />FindAction()<br />action.GetFilters()<br />InvokeAuthorizationFilter()<br />IAuthorizationFilter<br />InvokeActionResult()<br />Request.ValidateInput() (optional)<br />GetParametersValues()<br />GetParameterValue()<br />ModelBinder<br />Validation<br />InvokeActionMethodWithFilters() <br />IActionFilter<br />InvokeActionMethod()<br />InvokeActionResultWithFilters()<br />IResultFilter<br />InvokeActionResult()<br />Wenn Exception aufgetreten ist<br />InvokeExceptionFilters()<br />IExceptionFilter<br />InvokeActionResult()<br />GetFilters()<br />08.07.2010<br />Albert Weinert, Beratung & Entwicklung<br />
  12. 12. DependencyInjectionbyActionFilter<br />CODE<br />
  13. 13. ActionResult<br />Basis-Klasse für alle ActionResult<br />Implementieren<br />HttpHeader setzen (ContentType, Encoding etc.)<br />HttpContext.Response mit dem Ergebnis beschreiben<br />08.07.2010<br />Albert Weinert, Beratung & Entwicklung<br />
  14. 14. ActionResult mit DI für Kalendar Einträge<br />CODE<br />
  15. 15. Clientseite validierung<br />Html.EnableClientValidation()<br />Html.BeginForm(); Html.EndForm()<br />ModelClientValidationRule<br />ModelValidator => DataAnnotationsModelValidator<T><br />Registrierung des Validators<br />
  16. 16. Clientseite Validierung<br />CODE<br />
  17. 17. ModelBinder<br />Umwandeln der Request-Daten in ein Model<br />Implementiert IModelBinderobjectBindModel(ControllerContextcontrollerContext, ModelBindingContextbindingContext)<br />Nur eine Instanz pro Anwendung<br />DI Injection kann problematisch sein<br />
  18. 18. ModelBinder<br />CODE<br />

×