際際滷

際際滷Share a Scribd company logo
ASP.NET MVC Part I
Ventsislav Popov
Developer Evangelist at Microsoft
ventsypopov.com
ventsypopov.com
Agenda
 Beforehand  ASP.NET Web Forms
 What is MVC
 What is ASP.NET MVC?
 Models
 Views
 Controllers
 Validation
 Routing
 UnitTests
 View engines
2
ventsypopov.com
ASP.NET Web Forms
 Rich controls and tools
 Postbacks
 Event driven web development
 Viewstate
 Less control over the HTML
 Hard to test
 Rapid development
3
ventsypopov.com
Lets chat for a bit
4
ventsypopov.com
What is MVC
5
Model View - Controller
6
 Controller - responsible for handling all user
input
 Model - represents the logic of the application
 View - the visual representation of the model
ventsypopov.com
ASP.NET MVC
 More control over HTML
 No Codebehind
 Separation of concerns
 Easy to test
 URL routing
 No postbacks
 NoViewState
7
ventsypopov.com
Models
 The model should contain all of the application
business logic, validation logic, and database
access logic.
 ASP.NET MVC is compatible with any data
access technology (for example LINQ to SQL)
 All .edmx files, .dbml files etc. are located in
the Models folder.
8
ventsypopov.com
Custom View Models
9
 When you combine properties to display on a
View
namespace ContosoUniversity.ViewModels
{
public class AssignedCourseData
{
public int CourseID { get; set; }
public string Title { get; set; }
public bool Assigned { get; set; }
}
}
ventsypopov.com
Creating a Model - DEMO
10
ventsypopov.com
What is Controller?
 It is a class
 Derives from the base
System.Web.Mvc.Controller class
 Generates the response to the browser request
11
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
ventsypopov.com
Controller Actions
 Public method of the Controller class
 Cannot be overloaded
 Cannot be a static method
 Returns action result
12
public ActionResult About()
{
return View();
}
ventsypopov.com
Action Results
 Controller action response to a browser
request
 Inherits from the base ActionResult class
 Different results types
13
ventsypopov.com
Implement a Controller -
DEMO
14
ventsypopov.com
Action Results Types
 ViewResult
 EmptyResult
 RedirectResult
 JsonResult
 JavaScriptResult
 ContentResult
 FileContentResult
 FileStreamResult
 FilePathResult
15
ventsypopov.com
Controller base class
methods
 View
 Redirect
 RedirectToAction
 RedirectToRoute
 Json
 JavaScriptResult
 Content
 File
16
ventsypopov.com
Views
 Most of the Controller Actions return views
 The path to the view is inferred from the name
of the controller and the name of the
controller action.
 ViewsControllerNameControllerAction.aspx
 A view is a standard (X)HTML document that
can contain scripts.
 script delimiters <% and %> in the views
17
ventsypopov.com
Pass Data to a View
 WithViewData:
 ViewData["message"] = "Hello World!";
 Strongly typedViewData:
 ViewData.Model = OurModel;
 WithViewBag:
 ViewBag.Message = "Hello World!";
18
ventsypopov.com
Post data to a controller
 Verb Attributes
 The action method in the controller accepts the
values posted from the view.
 The view form fields must match the same
names in the controller.
19
ventsypopov.com
[HttpPost]
public ActionResult Edit(Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
Explore a View - DEMO
20
ventsypopov.com
HTML Helpers
 Methods which typically return string.
 Used to generate standard HTML elements
 textboxes, dropdown lists, links etc.
 Example: Html.TextBox() method
 Usage is optional
 You can create your own HTML Helpers
21
ventsypopov.com
Validation
 Two types of validation error messages
 generated before the HTML form fields are
bound to a class
 generated after the form fields are bound to the
class
 Model State
 Validation Helpers
 Html.ValidationMessage()
 Html.ValidationSummary()
22
ventsypopov.com
Implement validation-
DEMO
23
ventsypopov.com
Routing
 The Routing module is responsible for
mapping incoming browser requests to
particular MVC controller actions.
 Two places to setup:
 Web.config file
 Global.asax file
24
ventsypopov.com
Routing Setup
 Web.config file
25
<system.web>
<httpModules>

<system.web>
<httpHandlers> 
<system.webServer>
<modules> 
<system.webServer>
<handlers>

ventsypopov.com
Routing Setup
Global.asax file
26
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home",
action = "Index", id = "" }
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
ventsypopov.com
URL Example
http://www.mysite.com/Home/About/6
{controller} = Home
{action} = About
{id} = 6
27
ventsypopov.com
ventsypopov.com
Routing example - DEMO
28
ventsypopov.com
Unit Tests
 Used for the business logic (not DAL orView
logic).
 Test individual unitof code
 Make the code safe to modify
 Mock Object framework
 When you lack real objects
 Create mocks for the classes in the application
 Test with mock objects
29
ventsypopov.com
Unit Tests - DEMO
30
ventsypopov.com
View Engines
 Handles the rendering of the view to UI
(html/xml);
 Different view engines have different syntax
 ASP.NET MVC 3 Pre-includedView Engines:
 Web Forms
 Razor
31
ventsypopov.com
View Engines - DEMO
32
ventsypopov.com
Things to remember
 What MVC stands for
 How ASP.NET MVC differs from Web Forms
 Where is routing configured
 How to validate business logic
 How to use helpers
 Unit tests basics
 Choice between View Engines
33
ventsypopov.com
Useful sites
 http://www.asp.net/mvc
 http://msdn.microsoft.com/en-
us/library/dd394709.aspx
 http://stackoverflow.com/
 http://jquery.com/
34
ventsypopov.com
Questions?
ASP.NET MVC
ventsypopov.com
Email: vepopov [at] microsoft.com
Twitter: @v_popov
Time to wake up :)
36

More Related Content

ASP.NET-MVC-Part-1.ppt

  • 1. ASP.NET MVC Part I Ventsislav Popov Developer Evangelist at Microsoft ventsypopov.com ventsypopov.com
  • 2. Agenda Beforehand ASP.NET Web Forms What is MVC What is ASP.NET MVC? Models Views Controllers Validation Routing UnitTests View engines 2 ventsypopov.com
  • 3. ASP.NET Web Forms Rich controls and tools Postbacks Event driven web development Viewstate Less control over the HTML Hard to test Rapid development 3 ventsypopov.com
  • 4. Lets chat for a bit 4 ventsypopov.com
  • 6. Model View - Controller 6 Controller - responsible for handling all user input Model - represents the logic of the application View - the visual representation of the model ventsypopov.com
  • 7. ASP.NET MVC More control over HTML No Codebehind Separation of concerns Easy to test URL routing No postbacks NoViewState 7 ventsypopov.com
  • 8. Models The model should contain all of the application business logic, validation logic, and database access logic. ASP.NET MVC is compatible with any data access technology (for example LINQ to SQL) All .edmx files, .dbml files etc. are located in the Models folder. 8 ventsypopov.com
  • 9. Custom View Models 9 When you combine properties to display on a View namespace ContosoUniversity.ViewModels { public class AssignedCourseData { public int CourseID { get; set; } public string Title { get; set; } public bool Assigned { get; set; } } } ventsypopov.com
  • 10. Creating a Model - DEMO 10 ventsypopov.com
  • 11. What is Controller? It is a class Derives from the base System.Web.Mvc.Controller class Generates the response to the browser request 11 public class HomeController : Controller { public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); } public ActionResult About() { return View(); } } ventsypopov.com
  • 12. Controller Actions Public method of the Controller class Cannot be overloaded Cannot be a static method Returns action result 12 public ActionResult About() { return View(); } ventsypopov.com
  • 13. Action Results Controller action response to a browser request Inherits from the base ActionResult class Different results types 13 ventsypopov.com
  • 14. Implement a Controller - DEMO 14 ventsypopov.com
  • 15. Action Results Types ViewResult EmptyResult RedirectResult JsonResult JavaScriptResult ContentResult FileContentResult FileStreamResult FilePathResult 15 ventsypopov.com
  • 16. Controller base class methods View Redirect RedirectToAction RedirectToRoute Json JavaScriptResult Content File 16 ventsypopov.com
  • 17. Views Most of the Controller Actions return views The path to the view is inferred from the name of the controller and the name of the controller action. ViewsControllerNameControllerAction.aspx A view is a standard (X)HTML document that can contain scripts. script delimiters <% and %> in the views 17 ventsypopov.com
  • 18. Pass Data to a View WithViewData: ViewData["message"] = "Hello World!"; Strongly typedViewData: ViewData.Model = OurModel; WithViewBag: ViewBag.Message = "Hello World!"; 18 ventsypopov.com
  • 19. Post data to a controller Verb Attributes The action method in the controller accepts the values posted from the view. The view form fields must match the same names in the controller. 19 ventsypopov.com [HttpPost] public ActionResult Edit(Movie movie) { if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); }
  • 20. Explore a View - DEMO 20 ventsypopov.com
  • 21. HTML Helpers Methods which typically return string. Used to generate standard HTML elements textboxes, dropdown lists, links etc. Example: Html.TextBox() method Usage is optional You can create your own HTML Helpers 21 ventsypopov.com
  • 22. Validation Two types of validation error messages generated before the HTML form fields are bound to a class generated after the form fields are bound to the class Model State Validation Helpers Html.ValidationMessage() Html.ValidationSummary() 22 ventsypopov.com
  • 24. Routing The Routing module is responsible for mapping incoming browser requests to particular MVC controller actions. Two places to setup: Web.config file Global.asax file 24 ventsypopov.com
  • 25. Routing Setup Web.config file 25 <system.web> <httpModules> <system.web> <httpHandlers> <system.webServer> <modules> <system.webServer> <handlers> ventsypopov.com
  • 26. Routing Setup Global.asax file 26 public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); } protected void Application_Start() { RegisterRoutes(RouteTable.Routes); } } ventsypopov.com
  • 27. URL Example http://www.mysite.com/Home/About/6 {controller} = Home {action} = About {id} = 6 27 ventsypopov.com ventsypopov.com
  • 28. Routing example - DEMO 28 ventsypopov.com
  • 29. Unit Tests Used for the business logic (not DAL orView logic). Test individual unitof code Make the code safe to modify Mock Object framework When you lack real objects Create mocks for the classes in the application Test with mock objects 29 ventsypopov.com
  • 30. Unit Tests - DEMO 30 ventsypopov.com
  • 31. View Engines Handles the rendering of the view to UI (html/xml); Different view engines have different syntax ASP.NET MVC 3 Pre-includedView Engines: Web Forms Razor 31 ventsypopov.com
  • 32. View Engines - DEMO 32 ventsypopov.com
  • 33. Things to remember What MVC stands for How ASP.NET MVC differs from Web Forms Where is routing configured How to validate business logic How to use helpers Unit tests basics Choice between View Engines 33 ventsypopov.com
  • 34. Useful sites http://www.asp.net/mvc http://msdn.microsoft.com/en- us/library/dd394709.aspx http://stackoverflow.com/ http://jquery.com/ 34 ventsypopov.com
  • 35. Questions? ASP.NET MVC ventsypopov.com Email: vepopov [at] microsoft.com Twitter: @v_popov
  • 36. Time to wake up :) 36