Bài 02: Models, Views và Controllers

Bài 02: Models, Views và Controllers

Models, Views và Controller.

Trong bài này bn s có mt cài nhìn tổng quát v models, views, controller ca ASP.NET MVC framework. Bn s hiu s khác nhau giưa ASP.NET MVC vi các Framework khác như ASP.NET Webform hoc ASP.

URL Routing.

Mt request t browser s được map ti mt controller, đc tính này ca ASP.NET MVC gi là URL Routing.

Routing sử dụng một “bảng route” để “bắt” các request được gọi đến. Cái bảng này được khởi tạo ngay khi web app chạy lần đầu. Bản này được cài đặt trong file Global.asax. Mặc định của file này là:

Global.asax

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

namespace TaskList

{

// Note: For instructions on enabling IIS6 or IIS7 classic mode,

// visit http://go.microsoft.com/?LinkId=9394801

public class MvcApplication : System.Web.HttpApplication

{

public static void RegisterRoutes(RouteCollection routes)

{

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(

"Default", // Route name

"{controller}/{action}/{id}", // URL with parameters

new { controller = "Home", action = "Index", id = "" } // Parameter defaults

);

}

protected void Application_Start()

{

RegisterRoutes(RouteTable.Routes);

}

}

}

Với khởi tạo như trên thì khi bắt đầu một web app thì bảng route này sẽ chứa một route. Mà tất cả các request đều được “break” thành 3 phần. Phần đầu tiên map tới một controller name, phần thứ hai map tới một action name và phần cuối cùng map tới parameter pass tới action với tên là Id.

Eg: /Product/Details/3

Controller = ProductController

Action = Details

Id = 3

Chú ý là phần controller phia sau của nó “suffix” băt buộc phải là “Product” + “Controller”

Eg: /Product

Controller = ProductController

Action = Index

Id = “”

Eg: http://localhost

Controller = HomeController

Action = Index

Id = “”

Controllers

Một controller sẽ quyết định trả về cái gì cho browser, khi mà user thực hiện 1 request đối với server.

Một controller đơn giản chỉ là một class (VB.NET or C#.NET)

Chúng ta cùng xem qua file HomeController.cs (file này là mặc định khi bạn tạo một project MVC)

public class HomeController : Controller

{

private NorthwindDataContext db = new NorthwindDataContext();

public ActionResult Index()

{

var listTask = db.TaskTables.OrderByDescending(q => q.EntryDate);

return View(listTask.ToList());

}

public ActionResult About()

{

ViewData["Title"] = "About Page";

return View();

}

}

Ở đây minh chỉ trich đoạn trong file HomeController.cs, ta thây có 2 method Index() và About()

URL : /Home/Index sẽ gọi method Index(); /Home/About sẽ gọi method About()

Views

Nhìn vào HomeController trên ta thấy 2 method đều return lại một view – view chứa các HTML markup. Một view tương ứng một page trong ASP.NET MVC Framework.

Bạn phảiđặt hai file này vào đúng vị trí

HomeController.Index() return view với url : \Views\Home\Index.aspx

HomeController.About() return view với url : \Views\Home\About.aspx

Models

Đây là nơi chưa tất cả các business logic và data access của ứng dụng. Bạn không nên đặt qua nhiều code vào trong controller, controller chỉ có một vài dòng code mà thôi.

Comments

Hai Nam said…
Hi anh!
Em đang gặp một khó khăn nhỏ. Cụ thể như sau:
Trên trang index, em muốn thể hiện nhiều view thì làm thế nào? Tại vì em thấy mặc định nó chỉ có 1 view thôi.

Popular posts from this blog

How to search and HighLight !

What's ViewState? How does use?