ASP.NET MVC Essentials Routing, Controllers, Actions, Views, Areas… SoftUni Team Technical Trainers Software University

Slides:



Advertisements
Similar presentations
Sharpen Your MVC Views with Razor By Jon Marozick.
Advertisements

Introduction to MVC Adding a View Page NTPCUG Tom Perkins, Ph.D.
Nikolay Kostov Telerik Software Academy Senior Software Developer and Trainer
Telerik School Academy ASP.NET MVC.
Virtual techdays INDIA │ November 2010 ASP.Net MVC Deep Dive Sundararajan S │ Associate Tech Architect, Aditi Technologies.
What’s new in ASP.NET MVC 3 Building a NerdDinner/AppStore Application.
AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
PHP Basics Course Introduction SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Introduction to ASP.NET MVC Information for this presentation was taken from Pluralsight Building Applications with ASP.NET MVC 4.
Design Patterns: Structural Design Patterns
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
Composer packages Installing and Using Composer, Packagist, Packaging your code Mario Peshev Technical Trainer Software University
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
MVC Concepts Basics Model-View-Controller (MVC) Concepts for Web Developers SoftUni Team Technical Trainers Software University
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Templating, Routing, lodash Extending functionality using Collections SoftUni Team Technical Trainers Software University
ASP.NET MVC Architecture Layouts, Filters, Sections, Helpers, Partial Views, Areas… SoftUni Team Technical Trainers Software University
Controllers and Markup Controllers, $scope, Markup, Directives, Expressions, Binding, Filters, Validation SoftUni Team Technical Trainers Software University.
AMD and RequireJS Splitting JavaScript Code into Dependent Modules Software University Technical Trainers SoftUni Team.
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
SASS & LESS Syntactically Awesome StyleSheets Dynamic StyleSheet Language Svetlin Nakov Technical Trainer Software University
Sessions and Cookies State Management, Cookies, Sessions, Hidden Fields SoftUni Team Technical Trainers Software University
Web Fundamentals (HTML and CSS) Course Introduction SoftUni Team Technical Trainers Software University
Controls, Widgets, Grid…
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
AJAX in ASP.NET MVC AJAX, Partial Page Rendering, jQuery AJAX, MVC AJAX Helpers SoftUni Team Technical Trainers Software University
HTML Forms Forms, Controls, Fields, Inputs, Submission, Validation SoftUni Team Technical Trainers Software University
Forms Overview, Query string, Submitting arrays, PHP & HTML, Input types, Redirecting the user Mario Peshev Technical Trainer Software.
Web Fundamentals (HTML and CSS)
JQuery Overview Unleash the Power of jQuery SoftUni Team Technical Trainers Software University
Responsive Design Design that Adapts to Different Devices SoftUni Team Technical Trainers Software University
High-Quality Programming Code Code Correctness, Readability, Maintainability Svetlin Nakov Technical Trainer Software University
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Introduction  “M” “V” “C” stands for “MODEL” “VIEW” “CONTROLLER”. ASP.NET MVC is an architecture to develop ASP.NET web applications in a different manner.
Working with Data Model Binders, Display Templates, Editor Templates, Validation… SoftUni Team Technical Trainers Software University
ASP.NET Identity System
Virtual techdays INDIA │ 9-11 February 2011 SESSION TITLE Kamala Rajan S │ Technical Manager, Marlabs.
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
JavaScript Tools Tools for Writing / Editing / Debugging JavaScript Code Svetlin Nakov Technical Trainer Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Web Storage and Cookies Cookies, Local and Session Storage SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
Jim Fawcett CSE686 – Internet Programming Spring 2014
ASP.NET Essentials SoftUni Team ASP.NET MVC Introduction
Introduction to MVC SoftUni Team Introduction to MVC
Thymeleaf and Spring Controllers
ASP.NET MVC Essentials ASP.NET MVC Telerik Software Academy
Jim Fawcett CSE686 – Internet Programming Spring 2012
Social Media And Global Computing Introduction to The MVC Pattern
Caching Data in ASP.NET MVC
ASP.NET Razor Engine SoftUni Team ASP.NET MVC Introduction
MVC Architecture, Symfony Framework for PHP Web Apps
Routing, Controllers, Actions, Views
ASP.NET MVC Introduction
Creating UI elements with Handlebars
Extending functionality using Collections
ASP.NET Filters SoftUni Team ASP.NET MVC Introduction
ASP.NET Razor Engine SoftUni Team ASP.NET MVC Introduction
MVC Partial View.
Controllers.
Chengyu Sun California State University, Los Angeles
Presentation transcript:

ASP.NET MVC Essentials Routing, Controllers, Actions, Views, Areas… SoftUni Team Technical Trainers Software University

2 1.ASP.NET MVC Routing  Route constraints 2.Controllers and Actions  Action results and filters 3.Razor Views  Layout and sections  Helpers  Partial views 4.Areas Table of Contents

ASP.NET MVC Routing

4  Mapping between patterns and a combination of  controller + action + parameters  Routes are defined as a global list of routes  System.Web.Routing.RouteTable.Routes  Something similar to Apache mod_rewrite  Greedy algorithm  the first match wins ASP.NET MVC Routing

5  In Global.asax in the Application_Start() there is:  RouteConfig.RegisterRoutes(RouteTable.Routes);  RoutesConfig class is located in /App_Start/ in internet applications template by default Register routes Route name Route pattern Default parameters Routes to ignore The [*] means all left

6  Controller: Products  Action: ById  Id: 3 Routing Examples

7  Controller: Products  Action: ById  Id: 0 (optional parameter) Routing Examples (2)

8  Controller: Products  Action: Index  Id: 0 (optional parameter) Routing Examples (3)

9  Controller: Home  Action: Index  Id: 0 (optional parameter) Routing Examples (4)

10  Controller: Users  Action: ByUsername  Username: VGeorgiev Custom Route

11  Controller: Users  Action: ByUsername  Username: DefaultValue Custom Route (2)

12  Result: 404 Not Found Custom Route (3) ?

13  Constraints are rules on the URL segments  All the constraints are regular expression compatible with class Regex  Defined as one of the routes.MapRoute(…) parameters Route Constraints

14 Custom Route Constraint public class LocalhostConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext, public bool Match(HttpContextBase httpContext, Route route, Route route, string parameterName, string parameterName, RouteValueDictionary values, RouteValueDictionary values, RouteDirection routeDirection) RouteDirection routeDirection) { return httpContext.Request.IsLocal; return httpContext.Request.IsLocal; }} routes.MapRoute("Admin", "Admin/{action}", "Admin/{action}", new { controller="Admin" }, new { controller="Admin" }, new { isLocal = new LocalhostConstraint() } new { isLocal = new LocalhostConstraint() } ); );

15  In actions we have access to a data structure called RouteData  RouteData.Values["controller"]  RouteData.Values["action"]  RouteData.Values["id"]  We can use NuGet package: RouteDebugger  Install-Package RouteDebugger  Web.config:   We can also use Glimpse for debugging routes Debugging Routes

Demo: Routes ASP.NET MVC Routing

Controllers and Actions The brain of the application

18  The core component of the MVC pattern  All the controllers should be available in a folder by name Controllers  Controller naming standard should be "NameController"  Routers instantiate controllers in every request  All requests are mapped to a specific action  Every controller should inherit Controller class  Access to Request (context) and HttpContext Controllers

19  Actions are the ultimate request destination  Public controller methods  Non-static  No return value restrictions  Actions typically return an ActionResult Actions

20 ASP.NET MVC Request

21  Controller action response to a browser request  Inherits from the base ActionResult class  Different results types: Action Results NameFramework BehaviorProducing Method ContentResult Returns a string literalContent EmptyResult No response FileContentResult FilePathResult FileStreamResult Return the contents of a fileFile

22 Action Results (2) NameFramework BehaviorProducing Method HttpUnauthorizedResult Returns an HTTP 403 status JavaScriptResult Returns a script to executeJavaScript JsonResult Returns data in JSON formatJson RedirectResult Redirects the client to a new URLRedirect / RedirectPermanent RedirectToRouteResult Redirect to another action, or another controller’s action RedirectToRoute / RedirectToAction ViewResult PartialViewResult Response is the responsibility of a view engine View / PartialView

23  ASP.NET MVC maps the data from the HTTP request to action parameters in few ways:  Routing engine can pass parameters to actions   Routing pattern: Users/{username}  URL query string can contains parameters  /Users/ByUsername?username=VGeorgiev  HTTP post data can also contain parameters Action Parameters

24  ActionName(string name)  AcceptVerbs  HttpPost  HttpGet  HttpDelete  HttpOptions  …  NonAction  RequireHttps  ChildActionOnly – Only for Html.Action() Action Selectors

25  Apply pre- and post-processing logic  Similar to HTTP Modules  Can be applied to actions and to controllers  Global filters can be registered in GlobalFilters.  Filters (or in /App_Start/FilterConfig.cs ) Action Filters NameDescription OutputCacheCache the output of a controller ValidateInput(false)Turn off request validation and allow dangerous input (html tags) AuthorizeRestrict an action to authorized users or roles ValidateAntiForgeryTokenHelps prevent cross site request forgeries HandleErrorCan specify a view to render in the event of an unhandled exception

26  Create C# class file in /Filters/  Inherit ActionFilterAttribute  We can override:  OnActionExecuting (ActionExecutingContext)  OnActionExecuted (ActionExecutedContext)  OnResultExecuting (ResultExecutingContext)  OnResultExecuted (ResultExecutedContext)  We can apply our new attribute to a controller, method or globally in GlobalFilters.Filters Custom Action Filter

27 Custom Action Filter (2) [Log] public class DepartmentController : Controller { … } public class LogAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) public override void OnActionExecuting(ActionExecutingContext filterContext) { … } { … } public override void OnActionExecuted(ActionExecutedContext filterContext) public override void OnActionExecuted(ActionExecutedContext filterContext) { … } { … } public override void OnResultExecuting(ResultExecutingContext filterContext) public override void OnResultExecuting(ResultExecutingContext filterContext) { … } { … } public override void OnResultExecuted(ResultExecutedContext filterContext) public override void OnResultExecuted(ResultExecutedContext filterContext) { … } { … }}

Razor Views

29  HTML templates of the application  A lot of view engines available  View engines execute code and provide HTML  Provide a lot of helpers to easily generate HTML  The most popular is Razor and WebForms  We can pass data to views through:  ViewBag, ViewData and Model (strongly-typed views)  Views support master pages (layout views)  Other views can be rendered (partial views) Views

30  Template markup syntax  Simple-syntax view engine  Based on the C# programming language  Enables the programmer to use an HTML construction workflow  Code-focused templating approach, with minimal transition between HTML and code  Razor syntax starts code blocks with character and does not require explicit closing of the code-block Razor

31  Compact, Expressive, and Fluid  Smart enough to differ HTML from code  Easy to Learn  Is not a new language  Works with any Text Editor  Has great Intellisense  Built in Visual Studio  Unit Testable  Without requiring a controller or web-server Design Goals Template Data Generated Output

32  With ViewBag (dynamic type):  Action: ViewBag.Message = "Hello World!";   With ViewData (dictionary)  Action: ViewData["message"] = "Hello World!";   With Strongly-typed views:  Action: return View(model);  ModelDataType; Pass Data to a View

33 How it works? Template Data Generated Output ByUsername.cshtml UserModel.cs HTML Output UsersController.cs

34 – For values (HTML encoded) … } – For code blocks (keep the view simple!) Razor Syntax

35  If, else, for, foreach, etc. C# statements  HTML markup lines can be included at any part – For plain text line to be rendered Razor Syntax (2)

36  Comments  What about and s? Razor Syntax (3) <p> This is the sign that separates names from domains: This is the sign that separates names from domains: And this is how smart Razor is: And this is how smart Razor is:

37 – Explicit code expression – for including namespace into view – for defining the model for the view Razor Syntax (4)

38  Define a common site template  Similar to ASP.NET master pages (but better!)  Razor view engine renders content inside-out  First view is redered, then layout – indicate where we want the views based on this layout to “fill in” their core content at that location in the HTML Layout

39  Views don't need to specify layout since their default layout is set in their _ViewStart file:  ~/Views/_ViewStart.cshtml (code for all views)  Each view can specify custom layout pages  Views without layout: Views and Layouts

40  You can have one or more "sections" (optional)  They are defined in the views:  And may be rendered anywhere in the layout page using the method RenderSection() name, bool required)  If the section is required and not defined, an exception will be thrown (IsSectionDefined()) Sections

41  Each view inherits WebViewPage  ViewPage has a property named Html  Html property has methods that return string and can be used to generate HTML  Create inputs  Create links  Create forms  Other helper properties are also available  Ajax, Url, custom helpers View Helpers

42 Method TypeDescription BeginForm, BeginRouteForm FormReturns an internal object that represents an HTML form that the system uses to render the tag EndForm Form A void method, closes the pending tag CheckBox, CheckBoxFor Input Returns the HTML string for a check box input element Hidden, HiddenForInputReturns the HTML string for a hidden input element Password, PasswordForInputReturns the HTML string for a password input element RadioButton, RadioButtonFor InputReturns the HTML string for a radio button input element TextBox, TextBoxForInputReturns the HTML string for a text input element Label, LabelForLabelReturns the HTML string for an HTML label element HTML Helpers

43 Method TypeDescription ActionLink, RouteLinkLinkReturns the HTML string for an HTML link DropDownList, DropDownListFor ListReturns the HTML string for a drop-down list ListBox, ListBoxForListReturns the HTML string for a list box TextArea, TextAreaForTextAreaReturns the HTML string for a text area Partial Returns the HTML string incorporated in the specified user control RenderPartialPartialWrites the HTML string incorporated in the specified user control to the output stream ValidationMessage, ValidationMessageFor ValidationReturns the HTML string for a validation message ValidationSummaryValidationReturns the HTML string for a validation summary message HTML Helpers (2)

44  Write extension methods for the HtmlHelper  Return string or override ToString method  TagBuilder manages closing tags and attributes  Add namespace in web.config (if needed) Custom Helpers

45  Another way to write helpers:  Create folder /App_Code/  Create a view in it (for example Helpers.cshtml)  Write a helper in it  You can use the helper in any view  You have a lot of code in views? => write helpers Custom Helpers (2)

46  Partial views render portions of a page  Reuse pieces of a view  Html helpers – Partial, RenderPartial and Action  Razor partial views are still.cshtml files Partial Views Located in the same folder as other views or in Shared folder Sub-request

Areas

48  Some applications can have a large number of controllers  ASP.NET MVC lets us partition Web applications into smaller units (areas)  An area is effectively an MVC structure inside an application  Example: large e-commerce application  Main store, users  Blog, forum  Administration Areas

Demo: Areas ASP.NET MVC structures (areas)

50  Routes maps URLs to controllers and actions  Controllers are the brain of our application  Actions are the ultimate request destination  Razor is a powerful engine for combining models and templates into HTML code  Layout, sections, partials views and helpers help us to divide our views into pieces  Our project can be divided into smaller parts containing controllers (areas) Summary

? ? ? ? ? ? ? ? ? ASP.NET MVC

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International 52  Attribution: this work may contain portions from  "ASP.NET MVC" course by Telerik Academy under CC-BY-NC-SA licenseASP.NET MVCCC-BY-NC-SA

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg