mvc by asp.net development company in india

49
iFour Consultancy MVC

Upload: ifour-institute-sustainable-learning

Post on 09-Feb-2017

89 views

Category:

Software


1 download

TRANSCRIPT

Page 1: MVC by asp.net development company in india

iFour Consultancy

MVC

Page 2: MVC by asp.net development company in india

Introduction to MVC MVC vs WEB FORMS Architecture of MVC Routing Bundling Filter Custom Filter Actions Action Result Action Parameters Action Selection Action Filters Razor Layout View and Layout HTML Helpers in MVC Partial View Areas MVC STATE MANAGEMENT

INDEX

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 3: MVC by asp.net development company in india

Introduction to MVC

Software design pattern for developing web applications Software architecture pattern which separates the representation of information from the

users interaction with it Here M stands for Model, V stands for View and C stands for controller ASP.NET MVC helps to develop powerful and pattern-based dynamic websites that enables

a clean separation of concerns and also gives full control on a mark-up Also it includes many features that help to develop a sophisticated and modern web

application

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 4: MVC by asp.net development company in india

MVC vs WEB FORMS

MVC Web FormsEasier to Manage Complexity Preservers State over HTTP

Does not use view state or server based forms Page Controller Pattern

Rich Routing Structure View state or server based forms

Support for Test-Driven Development Works well for small teams

Supports Large Teams Well Development is less complex

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 5: MVC by asp.net development company in india

Architecture of MVC

A Model View Controller pattern is made up of the following three parts:ModelViewController

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 6: MVC by asp.net development company in india

Architecture of MVC (Cont.)

Model:Responsible for managing the data of the application It responds to the request from the view and it also responds to instructions from the controller

to update itselfLowest level pattern which is responsible for maintaining dataRepresents the application core (for instance a list of database records)Also called the domain layer

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 7: MVC by asp.net development company in india

Architecture of MVC (Cont.)

View:The View displays the data (the database records) A view requests information from the model, that it needs to generate an output representation Presents data in a particular format like JSP, ASP, PHP MVC is often seen in web applications, where the view is the HTML page

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 8: MVC by asp.net development company in india

Architecture of MVC (Cont.)

Controller: It is the part of the application that handles user interactionTypically controllers read data from a view, control user input, and send input data to the model It handles the input, typically user actions and may invoke changes on the model and view

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 9: MVC by asp.net development company in india

Routing

A route is a URL pattern that is mapped to a handler The handler can be a physical file, such as an .aspx file in a Web Forms application. A

handler can also be a class that processes the request, such as a controller in an MVC application

At runtime, Routing engine use the Route table for matching the incoming request's URL pattern against the URL patterns defined in the Route table

Register one or more URL patterns to the Route table at Application_Start event When the routing engine finds a match in the route table for the incoming request's URL,

it forwards the request to the appropriate controller and action If there is no match in the route table for the incoming request's URL, it returns a 404

HTTP status code

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 10: MVC by asp.net development company in india

How it works?•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 11: MVC by asp.net development company in india

How to define route?

public static void RegisterRoutes(RouteCollection routes){ routes.MapRoute( "Default", //Route name "{controller}/{action}/{id}", //URL with parameters

new { controller = "Home", action = "Index", id = UrlParameter.Optional } //Default parameters );}

protected void Application_Start(){

RegisterRoutes(RouteTable.Routes);//To:DO

}

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 12: MVC by asp.net development company in india

Bundling

It is a simple logical group of files that could be referenced by unique name and being loaded with one HTTP requestor

Bundling and minification reduces the number of HTTP Requests and payload size resulting in faster and better performing ASP.NET MVC Websites

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 13: MVC by asp.net development company in india

How to define bundling?

public static void RegisterBundles(BundleCollection bundles){ bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.unobtrusive*", “~/Scripts/my_custom_js.js”, ….....List of Js..............));}protected void Application_Start(){

BundleConfig.RegisterBundles(BundleTable.Bundles)}

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 14: MVC by asp.net development company in india

Filter

ASP.NET MVC Filter is a custom class where you can write custom logic to execute before or after an action method executes

Filters can be applied to an action method or controller in a declarative or programmatic way MVC provides different types of filters

•A markup language is a set of markup tags

Filter Type Description Built-in Filter Interface

Authorization filters

Performs authentication and authorizes before executing action method

[Authorize] [RequireHttps]

IAuthorizationFilter

Action filters Performs some operation before and after an action method executes

IActionFilter

Result filters Performs some operation before or after the execution of view result [OutputCache] IResultFilter

Exception filters Performs some operation if there is an unhandled exception thrown during the execution of the ASP.NET MVC pipeline

[HandleError] IExceptionFilter

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 15: MVC by asp.net development company in india

Filter

Filters can be applied at three levels : Global Level: Global filters will be applied to all the controller and action methods of an application

// MvcApplication class contains in Global.asax.cs file public class MvcApplication : System.Web.HttpApplication{ protected void Application_Start() { FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); }}// FilterConfig.cs located in App_Start folder public class FilterConfig{ public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }}

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 16: MVC by asp.net development company in india

Filter

• Controller Level: Filters can also be applied to the controller class. So, filters will be applicable to all the action method of Controller class if it is applied to a controller class [HandleError]public class HomeController : Controller{ public ActionResult Index() { return View(); }}

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 17: MVC by asp.net development company in india

Filter

Action method level: Apply filters to an individual action method. So, filter will be applicable to that particular action method only.

public class HomeController : Controller{ [HandleError] public ActionResult Index() { return View(); }}

Filters run in the following order. Authorization filters, Action filters, Response filters, Exception filters

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 18: MVC by asp.net development company in india

Custom Filter

Create custom filter attributes by implementing an appropriate filter interface for which creates custom filter and also derive a FilterAttribute class

For example Implement IExceptionFilter and FilterAttribute class to create custom exception filter. In the

same way implement an IAuthorizatinFilter interface and FilterAttribute class to create a custom authorization filter

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 19: MVC by asp.net development company in india

Custom Filter Example

class MyErrorHandler : FilterAttribute, IExceptionFilter{ public override void IExceptionFilter.OnException(ExceptionContext filterContext) { Log(filterContext.Exception); base.OnException(filterContext); } private void Log(Exception exception) { //log exception here.. }}

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 20: MVC by asp.net development company in india

Actions are the ultimate request destinationPublic controller methodsNon-staticNo return value restrictions

Actions typically return an ActionResult

Actions

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 21: MVC by asp.net development company in india

Controller action response to a browser request Inherits from the base ActionResult class Different results types:

Action Result

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 22: MVC by asp.net development company in india

Action Result (Cont.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 23: MVC by asp.net development company in india

ASP.NET MVC maps the data from the HTTP request to action parameters in few ways:Routing engine can pass parameters to actions

http://localhost/Users/IFourRouting pattern: Users/{username}

URL query string can contains parameters /Users/ByUsername?username=IFour

HTTP post data can also contain parameters

Action Parameters

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 24: MVC by asp.net development company in india

ActionName(string name) AcceptVerbs

HttpPostHttpGetHttpDeleteHttpOptions

NonAction RequireHttps ChildActionOnly – Only for Html.Action()

Action Selection

http://www.ifourtechnolab.com/

Page 25: MVC by asp.net development company in india

Action Filters

ASP.NET MVC provides the following types of action filters:Authorization filter, which makes security decisions about whether to execute an action method,

such as performing authentication or validating properties of the request The AuthorizeAttribute class is one example of an authorization filter

Action filter, which wraps the action method execution Perform additional processing, such as providing extra data to the action method, inspecting the return

value, or canceling execution of the action methodResult filter, which wraps execution of the ActionResult object. This filter can perform additional

processing of the result, such as modifying the HTTP response The OutputCacheAttribute class is one example of a result filter

Exception filter, which executes if there is an unhandled exception thrown somewhere in action method, starting with the authorization filters and ending with the execution of the result

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

Page 26: MVC by asp.net development company in india

How To Apply an Action Filter?

An attribute that implements the abstract FilterAttribute class Some action filters, such as AuthorizeAttribute and HandleErrorAttribute, implement the

FilterAttribute class directly, these action filters are always called before the action method runs Other action filters, such as OutputCacheAttribute , implement the abstract

ActionFilterAttribute class, which enables the action filter to run either before or after the action method runs

Use the action filter attribute to mark any action method or controller. If the attribute marks a controller, the action filter applies to all action methods in that controller

The following example shows the default implementation of the HomeController class In the example, the HandleError attribute is used to mark the controller. Therefore, the filter

applies to both action methods in the controller

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

Page 27: MVC by asp.net development company in india

Example for Action Filter

[HandleError]public class HomeController : Controller{ public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); }

OutputCache(Duration=10)] public ActionResult About() { return View(); }}

•A markup language is a set of markup tags

http://www.ifourtechnolab.com/

Page 28: MVC by asp.net development company in india

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 a @ character and does not require explicit closing of the code-block

Razor

http://www.ifourtechnolab.com/

Page 29: MVC by asp.net development company in india

@ - For values (HTML encoded)

@{ … } - For code blocks (keep the view simple!)

Razor Syntax

<p> Current time is: @DateTime.Now!!! Not HTML encoded value: @Html.Raw(someVar)</p>

@{ var productName = "Energy drink"; if (Model != null) { productName = Model.ProductName; } else if (ViewBag.ProductName != null) { productName = ViewBag.ProductName; }} <p>Product "@productName" has been added in shopping cart</p>

http://www.ifourtechnolab.com/

Page 30: MVC by asp.net development company in india

If, else, for, foreach, etc. C# statementsHTML markup lines can be included at any part@: – For plain text line to be rendered

Razor Syntax (Cont.)

<div class="products-list">@if (Model.Products.Count() == 0){ <p>Sorry, no products found!</p>}else{ @:List of the products found: foreach(var product in Model.Products) { <b>@product.Name,</b> }}</div>

http://www.ifourtechnolab.com/

Page 31: MVC by asp.net development company in india

Define a common site template Similar to ASP.NET master pages (but better!) Razor view engine renders content inside-out

First view is rendered, then layout @RenderBody() - Indicate where we want the views based on this

layout to “fill in” their core content at thatlocation in the HTML

Layout

http://www.ifourtechnolab.com/

Page 32: MVC by asp.net development company in india

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:

View and Layout

@{ Layout = "~/Views/Shared/_UncommonLayout.cshtml";}

@{ Layout = null;}

http://www.ifourtechnolab.com/

Page 33: MVC by asp.net development company in india

With MVC, HTML helpers are much like traditional ASP.NET Web Form controls Just like web form controls in ASP.NET, HTML helpers are used to modify HTML. But HTML

helpers are more lightweight. Unlike Web Form controls, an HTML helper does not have an event model and a view state

In most cases, an HTML helper is just a method that returns a string With MVC, you can create your own helpers, or use the built in HTML helpers

HTML Helpers in MVC

http://www.ifourtechnolab.com/

Page 34: MVC by asp.net development company in india

HTML Helpers in MVC (Cont.)

http://www.ifourtechnolab.com/

Page 35: MVC by asp.net development company in india

HTML Helpers in MVC (Cont.)

http://www.ifourtechnolab.com/

Page 36: MVC by asp.net development company in india

Partial views render portions of a pageReuse pieces of a viewHtml helpers – Partial, RenderPartial and Action

Razor partial views are still .cshtml files

Partial View

Located in the same folder as other views or in Shared folder

http://www.ifourtechnolab.com/

Page 37: MVC by asp.net development company in india

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, usersBlog, forumAdministration

Areas

http://www.ifourtechnolab.com/

Page 38: MVC by asp.net development company in india

It is the process by which developers can maintain state and page information over multiple request for the same or different pages in web application

Methods which are used in ASP.NET MVC applications: Hidden Field Cookies Query strings ViewData ViewBag TempData

MVC STATE MANAGEMENT

http://www.ifourtechnolab.com/

Page 39: MVC by asp.net development company in india

HiddenField Used to store small amounts of data on the client system. It is a preferable way when a variable’s

value is changed frequently. The only constraint on hidden filed is that it will keep the information when HTTP post is being done. It will not work with HTTP getFor example to store in hidden field in MVC view page like

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 40: MVC by asp.net development company in india

Cookies Small text file which is created by the server and stored on the client hard disk by the browser. It

does not use server memory. Generally a cookie is used to identify users When user sends a request to the server, the server creates a cookie and attaches a header and

sends it back to the user along with the response The browser accepts the cookie and stores it on the client machine either permanently or

temporarily. The next time the user makes a request for the same site, the browser checks the existence of the cookie for that site in the folder

Cookies are two types Persistence : Cookies are permanently stored till the time we set Non-Persistence : Cookies are not permanently stored on the user’s system. When user closes the

browser the cookie will be discarded

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 41: MVC by asp.net development company in india

Example :

Note: The number of cookies allowed is varies according to the browser. Most browsers allow 20 cookies per server in a client's hard disk folder and the size of a cookie is not more than 4 KB of data

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 42: MVC by asp.net development company in india

Query Strings String variable which is appended to the end of the Page URL Used to send data across pages Stores information in a key/value pair. A “?” signature is used to append the key and value to the page

URL In MVC application, pass query string values along with a route parameter id like

http://MyDomain/product/Edit/1?name=Mobile

Note: Most browsers impose a limit of 255 characters on URL length. We should encrypt query values.

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 43: MVC by asp.net development company in india

ViewDataDictionary object which is derived from ViewDataDictionary class. It will be accessible using

strings as keys

It lies only during the current request from controller to respective view . If redirection occurs then it’s value becomes null. It required typecasting for getting data on view

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 44: MVC by asp.net development company in india

ViewBag Dynamic property which is wrapped around the ViewData object. Dynamic property is a new feature in

ASP.NET Dynamic Language. We can simply set properties on the dynamic ViewBag property within controller

It also lies only during the current request from controller to respective view as ViewData, If redirection occurs it’s value becomes null. It does not required typecasting for getting data on view

Note: Both viewdata and viewbag are almost similar and helps to maintain data, they provide a way to communicate between controllers and views

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 45: MVC by asp.net development company in india

Similarities between ViewBag & ViewData : Helps to maintain data during movement from controller to view Used to pass data from controller to corresponding view Short life means value becomes null when redirection occurs. This is because their goal is to provide a way

to communicate between controllers and views. It’s a communication mechanism within the server call Difference between ViewBag & ViewData:

ViewData is a dictionary of objects that is derived from ViewDataDictionary class and accessible using strings as keys

ViewBag is a dynamic property that takes advantage of the new dynamic features in C# 4.0 ViewData requires typecasting for complex data type and check for null values to avoid error ViewBag doesn’t require typecasting for complex data type

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 46: MVC by asp.net development company in india

TempDataDictionary object which stores data as key/value pair and derived from TempData

Dictionary class. TempData helps to maintain data when we move from one controller to other controller or from

one action to other action. In other words it helps to maintain data between redirectsRedirectToAction has no impact over the TempData until TempData is read. Once TempData is

read its values will be lost

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 47: MVC by asp.net development company in india

TempData (Cont.)

Note: TempData.Keep() method is used to keep data in controllers as long as we wish

MVC STATE MANAGEMENT (Cont.)

http://www.ifourtechnolab.com/

Page 48: MVC by asp.net development company in india

https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm http://www.tutorialspoint.com/asp.net_mvc/ https://msdn.microsoft.com/en-us/library/dd381412(v=vs.108).aspx http://www.tutorialsteacher.com/mvc/asp.net-mvc-tutorials

References

http://www.ifourtechnolab.com/

Page 49: MVC by asp.net development company in india

Questions?

http://www.ifourtechnolab.com/