470 likes | 485 Views
This PPT is all about the MVC framework where you can get the information on MVC introduction, MVC overview & MVC architecture and that is very useful for the .NET Programmers, developers & beginners.
E N D
MVC iFour Consultancy https://www.ifourtechnolab.com/
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 https://www.ifourtechnolab.com/
MVC vs WEB FORMS https://www.ifourtechnolab.com/
A markup language is a set of markup tags Architecture of MVC • A Model View Controller pattern is made up of the following three parts: • Model • View • Controller https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 itself • Lowest level pattern which is responsible for maintaining data • Represents the application core (for instance a list of database records) • Also called the domain layer https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags Architecture of MVC (Cont.) • Controller: • It is the part of the application that handles user interaction • Typically 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 MVCapplication • 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags How it works? https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 } https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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) } https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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()); } } https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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(); } } https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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.. } } https://www.ifourtechnolab.com/
Actions • Actions are the ultimate request destination • Public controller methods • Non-static • No return value restrictions • Actions typically return an ActionResult https://www.ifourtechnolab.com/
Action Result • Controller action response to a browser request • Inherits from the base ActionResult class • Different results types: https://www.ifourtechnolab.com/
Action Result (Cont.) https://www.ifourtechnolab.com/
Action Parameters • 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/IFour • Routing pattern: Users/{username} • URL query string can contains parameters • /Users/ByUsername?username=IFour • HTTP post data can also contain parameters https://www.ifourtechnolab.com/
Action Selection • ActionName(string name) • AcceptVerbs • HttpPost • HttpGet • HttpDelete • HttpOptions • NonAction • RequireHttps • ChildActionOnly – Only for Html.Action() https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 method • Result 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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 https://www.ifourtechnolab.com/
A markup language is a set of markup tags 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(); } } https://www.ifourtechnolab.com/
Razor • 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 https://www.ifourtechnolab.com/
Razor Syntax • @ - For values (HTML encoded) • @{ … } - For code blocks (keep the view simple!) <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> https://www.ifourtechnolab.com/
Razor Syntax (Cont.) • If, else, for, foreach, etc. C# statements • HTML markup lines can be included at any part • @: – For plain text line to be rendered <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> https://www.ifourtechnolab.com/
Layout • 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 thislayout to “fill in” their core content at thatlocation in the HTML https://www.ifourtechnolab.com/
View and Layout • 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: @{ Layout = "~/Views/Shared/_UncommonLayout.cshtml"; } @{ Layout = null; } https://www.ifourtechnolab.com/
HTML Helpers in MVC • 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 https://www.ifourtechnolab.com/
HTML Helpers in MVC (Cont.) https://www.ifourtechnolab.com/
HTML Helpers in MVC (Cont.) https://www.ifourtechnolab.com/
Partial View • 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 Located in the same folder as other views or in Shared folder https://www.ifourtechnolab.com/
Areas • 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT • 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • 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 get • For example to store in hidden field in MVC view page like https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • 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. https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • ViewData • Dictionary 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • 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 https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • TempData • Dictionary 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 redirects • RedirectToAction has no impact over the TempData until TempData is read. Once TempData is read its values will be lost https://www.ifourtechnolab.com/
MVC STATE MANAGEMENT (Cont.) • TempData (Cont.) • Note: TempData.Keep() method is used to keep data in controllers as long as we wish https://www.ifourtechnolab.com/
References • 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 https://www.ifourtechnolab.com/