Tìm hiểu về Controllers

Một phần của tài liệu TỔNG QUAN VỀ ASP.NET 3.5 potx (Trang 37 - 41)

2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework

2.4 Tìm hiểu về Controllers

Controller chịu trách nhiệm điều khiển các tương tác của người dùng bên trong ứng dụng MVC. Controller sẽ quyết định cái gì được trả về cho người dùng khi người dùng tạo ra một request trên browser.

Một controller là một class ( C# class hoặc VB class). Trong ví dụ ứng dụng ASP.NET MVC Web Application mẫu luôn tồn ta ̣i 2 controller là AccountController.cs và HomeController.cs nằm trong folder Controllers

HomeController.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; namespace HiTest.Controllers { [HandleError]

public class HomeController : Controller {

public ActionResult Index() {

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

ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View();

}

public ActionResult About() {

ViewData["Title"] = "About Page"; return View();

} } } }

Trong HomeController.cs có 2 phương thức là Index() và About(). Hai phương thức này là 2 action trong controller HomeController.cs nó thực hiện khi được gọi bằng địa chỉ /Home/Index và /Home/About. Bất kỳ phương thức nào có thuộc tính public đều là một action trong controller.

Tạo một Controller mới

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 15

Figure 13. Tạo controller tên là SanPhamController.cs

SanPhamController.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; using BanHang.Models; namespace BanHang.Controllers {

public class SanPhamController : Controller {

DataClassesDataContext data = new DataClassesDataContext(); public ActionResult Index()

{

// Add action logic here

ViewData["Title"] = "Sản phẩm";

return RedirectToAction("DanhMucLoaiSanPham"); }

public ActionResult DanhMucLoaiSanPham() {

// Code cua ban o day

ViewData["Title"] = "Danh mục loại sản phẩm";

List<LoaiSanPham> lsp = data.LoaiSanPhams.ToList(); return View("DanhMucLoaiSanPham", lsp);

}

public ActionResult DanhSachSanPham(string loaisanpham) {

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 16

List<SanPham> sp = data.LaySanPhamTuLoaiSanPham(loaisanpham); return View("DanhSachSanPham", sp);

}

public ActionResult ChiTietSanPham(int id) {

ViewData["Title"] = "Chi tiết sản phẩm"; SanPham ctsp = data.LaySanPhamQuaID(id); return View("ChiTietSanPham", ctsp); } } } 2.5 Tìm hiểu về Views

Trong controller HomeController.cs, cả hai phương thức Index() và About() đều trả về một view. Một view chứa các thẻ HTML và được trả về cho browser. Trong mơ hình MVC thì một view tương ứng với một trang .aspx trong WebForm.

View phải được tạo đúng vị trí đường dẫn. Ví dụ với controller HomeController.cs thì hành động HomeController.Index() trả về một view nằm ở vị trí đường dẫn \Views\Home\Index.aspx và HomeController.About() sẽ trả về một view nằm ở vị trí đường dẫn \Views\Home\About.aspx

View About.aspx

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs"

Inherits="HiTest.Views.Home.About" %>

<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">

<h2>About Us</h2> <p>

TODO: Put <em>about</em> content here. </p>

</asp:Content>

View Index.aspx

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs"

Inherits="HiTest.Views.Home.Index" %>

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">

<h2><%= Html.Encode(ViewData["Message"]) %></h2> <p>

To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.

</p>

</asp:Content>

Tất cả các thuộc tính nằm giữa 2 thẻ <asp:Content></asp:Content> đều có định dạng HTML và có thể tùy ý sửa đổi theo ý muốn.

Tạo view cho controller SanPhamController.cs, trong SanPhamController.cs có 4 phương thứ c public là Index(), DanhMucLoaiSanPham(), DanhSachSanPham() và ChiTietSanPham() nên trong Views phải ta ̣o 4 view tương ứng là Index.aspx, DanhMucLoaiSanPham.aspx, DanhSachSanPham.aspx, ChiTietSanPham.aspx bằng cách từ

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 17

folder Views click phải chuô ̣t cho ̣n Add  New Folder nhập tên folder mới ta ̣o là SanPham. Từ folder SanPham click phải chuô ̣t cho ̣n Add  View… (Figure 14) (ví dụ tạo view DanhMucLoaiSanPham)

Figure 14. Tạo view DanhMucLoaiSanPham trong folder SanPham

Index.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs"

Inherits="BanHang.Views.SanPham.Index" %>

<asp:Content ID="viewIndex" ContentPlaceHolderID="MainContent" runat="server">

<h1>Đây là trang chính của sản phẩm</h1>

</asp:Content>

DanhMucLoaiSanPham.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true"

CodeBehind="DanhMucLoaiSanPham.aspx.cs"

Inherits="BanHang.Views.SanPham.DanhMucLoaiSanPham" %>

<asp:Content ID="viewDanhMucLoaiSanPham" ContentPlaceHolderID="MainContent" runat="server">

<h1>

Đây là danh mục loại sản phẩm</h1>

<% foreach (var lsp in ViewData.Model) { %> <li> <%= Html.ActionLink(lsp.TenLoaiSanPham, "DanhSachSanPham/" + lsp.TenLoaiSanPham, "SanPham") %> </li> <% } %> </asp:Content> DanhSachSanPham.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="DanhSachSanPham.aspx.cs"

Inherits="BanHang.Views.SanPham.DanhSachSanPham" %>

<asp:Content ID="viewDanhSachSanPham" ContentPlaceHolderID="MainContent" runat="server">

<h1>Đây là danh sách sản phẩm có trong chuyên mục</h1> </asp:Content>

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 18

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="ChiTietSanPham.aspx.cs"

Inherits="BanHang.Views.SanPham.ChiTietSanPham" %>

<asp:Content ID="viewChiTietSanPham" ContentPlaceHolderID="MainContent" runat="server">

<h1>Đây là Chi tiết sản phẩm</h1>

</asp:Content>

Một phần của tài liệu TỔNG QUAN VỀ ASP.NET 3.5 potx (Trang 37 - 41)

Tải bản đầy đủ (PDF)

(118 trang)