Advanced  ASP.NET 2 05.10.2010
Upcoming SlideShare
Loading in...5
×
 

Advanced ASP.NET 2 05.10.2010

on

  • 1,067 views

Der Quelltext dazu ist hier

Der Quelltext dazu ist hier

http://github.com/DerAlbertCom/AdvancedMVC

Statistics

Views

Total Views
1,067
Views on SlideShare
1,067
Embed Views
0

Actions

Likes
0
Downloads
14
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Advanced  ASP.NET 2 05.10.2010 Advanced ASP.NET 2 05.10.2010 Presentation 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
  • Controller-Filter-Methoden
    OnActionExecuting() => IActionFilter
    OnActionExecuted() => IActionFilter
    OnResultExecuting() => IResultFilter
    OnResultExecuted() => IResultFilter
    OnAuthorization() => IAuthorzisationFilter
    OnException() => IExceptionFilter
    05.10.2010
    Albert Weinert, Beratung & Entwicklung
  • overrideOnResultExecuting
    CODE
  • Inversion ofcontrol
    DependencyInjection mit IoC Frameworks
    StructureMap
    LightCore
    Windsor.Castle
    Unity
    In MVC 2 nur über ControllerFactory
    Woanders muss „selbst“ injiziert werden
  • ControllerFactory
    CODE
  • 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
    IActionInvokerCreateActionInvoker()
    returnnewControllerActionInvoker()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
    Albert Weinert, Beratung & Entwicklung
  • DependencyInjectionbyActionFilter
    CODE
  • ActionResult
    Basis-Klasse für alle ActionResult
    Implementieren
    HttpHeader setzen (ContentType, Encoding etc.)
    HttpContext.Response mit dem Ergebnis beschreiben
    08.07.2010
    Albert Weinert, Beratung & Entwicklung
  • 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 IModelBinderobjectBindModel(ControllerContextcontrollerContext, ModelBindingContextbindingContext)
    Nur eine Instanz pro Anwendung
    DI Injection kann problematisch sein
  • ModelBinder
    CODE