ASP.NET MVC 3
-
Upload
buu-nguyen -
Category
Technology
-
view
18.616 -
download
2
description
Transcript of ASP.NET MVC 3
ASP.NET MVC 3 Buu Nguyen
Buu Nguyen
• Microsoft MVP (ASP.NET)
• Vice President of Technology, KMS Technology
• Lecturer, RMIT University Vietnam
ASP.NET MVC 3 Features
Major Improvements
• NuGet
• Razor View Engine
• HTML Helpers
• Dependency Injection
• Model Validation
Minor Improvements
• Sessionless Controllers
• ViewBag Property
• JSON Model Binding
• Granular Input Validation
• Partial Page Output Cache
• Global Action Filters
• New Action Result Types
ASP.NET MVC OVERVIEW
Technology Stack
Demo: Travel Log Web App
NUGET
NuGet - Package Manager for .NET
• Available at http://nuget.codeplex.com/
Package Manager Console
Building NuGet Package
• Authoring support • Define dependencies
• Transform configuration file and source
• Add initialization to web app startup via WebActivator
• Contribute at http://nuget.org/Contribute/Index
Demo: Combres NuGet Package
RAZOR VIEW ENGINE
Web Forms vs. Razor
Basic Syntax
Razor ASPX Description
@exp <%: exp %> Encode and output an expression to the page
@(exp) <%: exp %> Explicit expression, e.g. @(imagePath).jpg
@{ stms; } <% stms; %> Execute code statements
@Html.Raw(exp) <%= exp %> Output an expression to the page
@* cmt *@ <%-- cmt --%> Comment out code block
@if(cond) {
stm;
} else {
stms;
}
<%
if (cond) {
stms;
} else {
stms;
}
%>
Execute conditional statements Other constructs work the same way: @foreach, @for, @while, @switch, @try etc.
Transition to Code
• As soon as Razor parser encounters the syntax mentioned in Basic Syntax, it switches to code mode
• Escape @ by using @@, e.g. Tweets by @@buunguyen
Transition to Markup
Option 3: Single line markup
Option 1: HTML Block
Option 2: Text Block
Directives
or
Functions
Layout
_ViewStart.cshtml
• Code in _ViewStart.cshtml executes before view rendering
• Hierarchical, subfolders override parent folders
Razor Configuration
Demo: Razor in Travel Log
HTML HELPERS
Declarative HTML Helpers
• Alternative way to write reusable rendering blocks
• Can be placed into App_Code folder
New HTML Helpers (both declarative & traditional)
Built-in
• Chart
• WebGrid
• WebImage
• Crypto
• WebMail
microsoft-web-helpers
• ReCaptcha
• LinkShare
• Gravatar
• Bing
• Analytics
• FileUpload
• Video
Demo: Declarative Helpers in Travel Log
DEPENDENCY INJECTION
Injecting Dependencies into Controllers
• registering & injecting controller factories
• injecting controllers Controllers
• registering & injecting view engines
• injecting view pages Views
• locating & injecting filters Action Filters
• registering & injecting Model Binders
• registering & injecting Value Providers
• registering & injecting Validation Providers
• registering & injecting Model Metadata
Providers
DI Points in ASP.NET MVC 3
IDependencyResolver
Activators
• Useful when you don’t use an IoC container
Demo: Dependency Injection in Travel Log
MODEL VALIDATION
Model Validation
• A value must be provided [Required]
• Value must be in a given range e.g. 1-10 [Range]
• Value must satisfy a regular expression [RegularExpression]
• Value must be a min length and less than the max length [StringLength]
• Value must equal another property e.g. password [Compare]
• Value is validated remotely via JSON [Remote]
• Custom model validators Extensible…
Other Validation Improvements
• Self-validating model with IValidatableObject
• ValidationContext for multi-property validation
• Client-validation is enabled by default
• jQuery Validate plugin is used by default
• Unobtrusive client-side validation
• EF4 CTP5 works with validation attributes
Demo: Remote Validator in Travel Log
MINOR IMPROVEMENTS
Sessionless Controllers
ViewBag Property
Note: can be used exchangeably with ViewData dictionary
JSON Model Binding
Granular Input Validation
Partial Page Output Cache
Global Action Filters
Note: all MVC 3 filters are effectively singleton, don’t use instance states
New Action Result Types
• HttpNotFoundResult
• HttpStatusCodeResult
• RedirectPermanent • RedirectToRoutePermanent
• RedirectToActionPermanent
Demo: Apply to Travel Log
Q&A
THANK YOU! [email protected]
www.buunguyen.net/blog
www.twitter.com/buunguyen
http://vn.linkedin.com/in/buunguyen