Tải bản đầy đủ (.pdf) (23 trang)

14 chuong 14 tủ tài liệu bách khoa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (853.81 KB, 23 trang )

Chương 14 Tổng quan về Project MVC
Tôi sẽ cung cấp một số ngữ cảnh khác trước khi bước vào các tính năng của MVC
Framework. Chương này đưa ra một tổng quan về cấu trúc và tính chất của một
ứng dụng ASP.NET MVC, bao gồm cả cơ cấu dự án mặc định và quy ước đặt tên,
một số trong đó là tùy chọn và một số trong đó được mã hóa cứng vào cách mà các
MVC Framework hoạt động.

Làm việc với Visual Studio MVC Project
Khi bạn tạo mới một Project ASP.NET, Visual Studio cung cấp cho bạn một số lựa
chọn như các nội dung ban đầu mà bạn muốn trong dự án. Mục đích là để giảm bớt
quá trình học tập cho người mới phát triển và sử dụng một số bài thực hành tốt
nhất để tiết kiệm thời gian cho các tính năng và các công việc chung. Sự hỗ trợ này
tiếp tục bằng mẫu template đã tạo ra các contrlllers và views được tạo ra code mẫu
cho danh sách các đối tượng dữ liệu, chỉnh sửa các thuộc tính model và như vậy.
Với Visual Studio 2013 và MVC 5, Microsoft đã cập nhật các bản template mẫu và
scaffolding, vì nó được biết đến, làm mờ ranh giới giữa các loại khác nhau của dự
án ASP.NET và để cung cấp một phạm vi rộng lớn hơn của các dự án template
mẫu và code cấu hình.
Phần 1 của cuốn sách này sẽ để lại cho bạn không có nghi ngờ rằng tôi không phải
là một fan hâm mộ của cách tiếp cận đến dự án rập khuôn hoặc mã. Ý định là tốt,
nhưng thực hiện luôn là underwhelming. Một trong những đặc điểm tôi thích nhất
về ASP.NET và MVC Framework là có bao nhiêu sự linh hoạt mà tôi có trong
thiết kế nền tảng cho phù hợp với phong cách phát triển của tôi, và các dự án, các
lớp học và quan điểm rằng Visual Studio tạo ra và làm cho tôi cảm thấy bị hạn chế
làm việc khi theo phong cách của người khác. Tôi cũng thấy các nội dung và cấu
hình quá chung chung và quá nhạt nhẽo để có ích. Trong Chương 10, tôi đã nói
rằng một trong những mối nguy hiểm của việc sử dụng thiết kế responsive với thiết
bị di động là một loại trung bình mà cuối cùng sẽ làm ảnh hưởng đến trải nghiệm
của tất cả các thiết bị, và một cái gì đó tương tự đã xảy ra với mẫu templates Visual
Studio. Microsoft có thể không thể biết những loại ứng dụng mà bạn cần để tạo ra
và vì vậy họ bao gồm tất cả các cơ sở, nhưng theo một cách buồn tẻ và được khái


quát như vậy mà cuối cùng tôi chỉ trích ra các nội dung mặc định bằng mọi cách.
Lời khuyên của tôi (trao cho bất cứ ai làm cho những sai lầm của yêu cầu) là bắt
đầu với một project rỗng và thêm các thư mục, tập tin và gói tập tin mà bạn cần.


Không chỉ bạn sẽ tìm hiểu thêm về cách thức mà các MVC Framework làm việc,
nhưng bạn sẽ có quyền kiểm soát hoàn toàn đối với những ứng dụng của bạn có
chứa.
Nhưng sở thích của tôi không nên tô màu cho khinh nghiệm phát triển của bạn.
Bạn có thể tìm thấy các templates và scaffolding hữu ích hơn so với tôi, đặc biệt
nếu bạn mới phát triển ASP.NET và bạn chưa phát triển theo một phong cách phát
triển cá nhân phù hợp với mình. Bạn cũng có thể tìm thấy mẫu dự án templates một
nguồn tài nguyên hữu ích và là nguồn ý tưởng, mặc dù vậy bạn nên thận trọng về
cách thêm các chức năng vào một ứng dụng trước khi bạn hoàn toàn hiểu làm thế
nào nó hoạt động.

Tạo một Project
Khi bạn lần đầu tiên tạo ra một dự án MVC Framework mới, bạn có hai
điểm khởi đầu cơ bản để lựa chọn: các template rỗng và các template
MVC. Những cái tên có một chút sai lầm, bởi vì bạn có thể thêm các thư
mục cơ bản và các mục cần thiết cho các MVC Framework để bất kỳ
mẫu dự án tempplate bằng cách kiểm tra các tùy chọn MVC trong Add
Folders và Core References phần của cửa sổ hộp thoại New Project
ASP.NET, như được hiển thị trong hình 14-1. Đối với tùy chọn MVC,
tùy chọn này được kiểm tra cho bạn.


Hình 14.1 Lựa chọn các loại hình dự án, thư mục và assemblies cho một
dự án mới
Sự khác biệt là các nội dung bổ sung mà các dự án mẫu MVC thêm các

dự án mới, trong đó cung cấp một điểm khởi đầu làm sẵn bao gồm mặc
định controllers mặc định và views mặc định, một cấu hình bảo mật, một
số gói JavaScript và CSS phổ biến (như jQuery và Bootstrap) và một
layout sử dụng Bootstrap để cung cấp một chủ đề cho các nội dung ứng
dụng. Các tùy chọn dự án rỗng chỉ chứa các tài liệu tham khảo cơ bản
cần thiết cho một MVC Framework và cấu trúc thư mục barebone. Có
một số lượng hợp lý các nội dung bổ sung bởi các mẫu MVC và bạn có
thể thấy sự khác biệt trong hình 14-2, trong đó cho thấy các nội dung
của hai dự án mới được tạo ra. Người bên trái được tạo ra với các mẫu


rỗng với các thư mục và tài liệu tham khảo MVC tùy chọn kiểm tra.
Người khác cho thấy các nội dung của dự án đã được tạo ra với các mẫu
MVC, và để có thể hiển thị các tập tin trên trang này, tôi đã phải tập
trung các Solution Explorer vào thư mục khác nhau, vì một danh sách
duy nhất là quá dài cho một trang in.


Hình 14-2. Các nội dung mặc định thêm vào một dự án của các mẫu
rỗng và MVC
Các tập tin thêm làm cho dự án MVC thêm tồi tệ hơn so với thực tế. Một
số có liên quan đến xác thực và những người khác là JavaScript và CSS
cho các tập tin mà có những phiên bản thường xuyên và minified. (Tôi
mô tả cách này có thể được sử dụng trong Chương 26.)
Mẹo: Visual Studio tập hợp một dự án tạo ra với các mẫu MVC sử dụng
các gói NuGet, có nghĩa là cái mà bạn có thể thấy, những gói được sử
dụng bằng cách chọn Manage NuGet Packages cho Solution từ menu
Visual Studio Tools Library Package Manager. Nó cũng có nghĩa là bạn
có thể thêm các gói tương tự cho bất kỳ dự án, trong đó có một dự án tạo
ra với các mẫu trống (và đây là những gì tôi đã làm cho các ví dụ trong

Phần 1 của cuốn sách này).
Bất cứ mẫu mà bạn chọn, bạn sẽ nhận thấy rằng các dự án có cấu trúc
thư mục tương tự. Một số mục trong một dự án MVC có vai trò đặc biệt,
đó là mã hóa cứng vào ASP.NET hoặc các MVC Framework. Những đối
tượng khác tùy thuộc vào quy ước đặt tên. Tôi đã mô tả mỗi tập tin cốt
lõi và thư mục trong Bảng 14-1, một số trong đó không có mặt trong các
dự án theo mặc định, nhưng mà tôi giới thiệu trong chương sau.
Bảng 14-1. Tóm tắt các mục Project MVC
Thư mục hoặc tập tin
/App_Data

Mô tả
Thư mục này là nơi
bạn đưa dữ liệu cá
nhân, chẳng hạn như
các file XML hoặc cơ
sở dữ liệu nếu bạn
đang sử dụng SQL
Server Express,

Ghi chú
IIS sẽ không phục vụ
các nội dung của thư
mục này.


/App_Start

/Areas


/bin

/Content

/Controllers

SQLite, hoặc kho
filebased khác.
Thư mục này chứa
một số cài đặt cấu
hình cốt lõi của cho
dự án của bạn, bao
gồm các định nghĩa
của các routes và
filters và các nội dung
bundles.
Areas là một cách để
phân vùng một ứng
dụng lớn thành các
phần nhỏ hơn.
Các assembly biên
soạn cho ứng dụng
MVC của bạn được
đặt ở đây, cùng với
bất kỳ assembly tham
chiếu mà không phải
là trong GAC.

Tôi mô tả các routes
trong Chương 15 và

16, các filters trong
Chương 18 và các nội
dung bundles trong
Chương 26.

Tôi mô tả trong
chương 15

Bạn sẽ không thấy các
thư mục bin trong cửa
sổ Solution Explorer,
trừ khi bạn nhấn nút
Show All Files. Vì
đây là những tập tin
nhị phân tạo ra trên
biên dịch, bạn không
nên lưu trữ chúng
trong source control.
Đây là nơi mà bạn đặt Đây là một quy ước
nội dung tĩnh như các nhưng không bắt
tập tin CSS và hình
buộc. Bạn có thể đưa
ảnh
nội dung tĩnh của bạn
bất cứ nơi nào phù
hợp với bạn.
Đây là nơi bạn đặt các Đây là một quy ước.
lớp điều khiển của
Bạn có thể đặt các lớp
bạn.

điều khiển của bạn bất
cứ nơi nào mà bạn
thích, vì tất cả đều


/Models

/Scripts

/Views

/Views/Shared

được biên dịch vào
cùng một assembly.
Đây là nơi mà bạn đặt Đây là một quy ước.
view model và các lớp Bạn có thể định nghĩa
domain model của
các lớp model bất cứ
bạn, mặc dù tất cả các nơi nào trong dự án
ứng dụng đơn giản
hay trong một dự án
nhưng lợi ích từ việc riêng biệt
xác định các domain
model trong một dự
án chuyên dụng, như
tôi đã chứng minh cho
SportsStore.
Thư mục này được
Đây là một quy ước.

thiết kế để chứa các
Bạn có thể đặt các tập
thư viện JavaScript
tin script trong bất kỳ
cho ứng dụng của
vị trí, như chúng chỉ
bạn.
là một kiểu nội dung
tĩnh. Xem Chương 26
để biết thêm thông tin
về việc quản lý các
tập tin script
Thư mục này chứa
Các tập tin
các views và partial
/Views/web.config
views, thường nhóm
ngăn chặn IIS từ phục
lại với nhau trong các vụ nội dung của các
thư mục sau tên
thư mục. Lần đọc phải
controller mà chúng
được trả thông qua
có liên quan.
một phương thức
action.
Thư mục này chứa
các layout và views
mà không cụ thể với
một bộ điều khiển duy

nhất.


/Views/Web.config

/Global.asax

/Web.config

Đây không phải là tập
tin cấu hình cho ứng
dụng của bạn. Nó
chứa các cấu hình cần
thiết để làm cho views
làm việc với
ASP.NET và ngăn
chặn view từ đang
được phục vụ bởi IIS
và tên các vùng
imported vào views
theo mặc định.
Đây là lớp ứng dụng
ASP.NET trên global.
Lớp code phía sau
(Global.asax.cs) là nơi
để đăng ký cấu hình
định tuyến, cũng như
thiết lập bất kỳ mã để
chạy trên ứng dụng
khởi tạo hay tắt máy,

hoặc khi ngoại lệ chưa
xử lý xảy ra.
Đây là tập tin cấu
hình cho ứng dụng
của bạn.

Các tập tin
Global.asax có vai trò
như nhau trong một
ứng dụng MVC như
nó trong một ứng
dụng Web Forms

Các tập tin
Web.config có vai trò
như nhau trong một
ứng dụng MVC như
nó trong một ứng
dụng Web Forms.

Hiểu biết về các quy ước MVC
Có hai loại quy ước trong một dự án MVC. Loại đầu tiên chỉ là các đề
xuất làm như thế nào bạn có thể cấu trúc dự án của bạn. Ví dụ, nó là


thường đặt các tập tin JavaScript của bạn trong thư mục Scripts. Đây là
nơi mà các nhà phát triển MVC khác sẽ mong đợi để tìm thấy chúng, và
nơi mà các gói NuGet sẽ cài đặt chúng. Nhưng bạn có thể tự do thay đổi
tên của thư mục Scripts, hoặc loại bỏ nó hoàn toàn và đặt các script của
bạn ở một nơi khác. Điều đó sẽ không ngăn chặn các MVC Framework

chạy ứng dụng của bạn miễn là các yếu tố script trong views của bạn đề
cập đến nơi bạn thực hiện.
Loại khác của quy ước phát sinh từ các nguyên tắc quy ước về cấu hình,
đó là một trong những điểm bán hàng chính khiến Ruby on Rails nên
phổ biến. Quy ước về cấu hình có nghĩa là bạn không cần phải cấu hình
một cách rõ ràng mối liên hệ giữa các controllers và views của chúng, ví
dụ. Bạn chỉ cần làm theo một quy ước đặt tên nhất định cho các tập tin
của bạn, và tất cả mọi thứ hoạt động. Có ít sự linh hoạt trong việc thay
đổi cấu trúc dự án của bạn khi đối với các loại quy ước. Những phần sau
giải thích cho các quy ước được sử dụng ở nơi cấu hình.
Mẹo: Tất cả các quy ước có thể được thay đổi nếu bạn đang sử dụng
một công cụ xem tùy chỉnh (mà tôi đã làm trong chương 20), nhưng điều
này không phải là một bước để xem nhẹ và với hầu hết các phần, đó là
những quy ước bạn sẽ được xử lý với các dự án MVC.
Các quy ước cho lớp Controller
Các lớp Controller phải có tên kết thúc bằng Controller, chẳng hạn
như ProductController, AdminController, và HomeController. Khi tham
chiếu một bộ điều khiển từ các nơi khác trong dự án, chẳng hạn như khi
sử dụng một phương pháp trợ giúp HTML, bạn chỉ định một phần đầu
tiên của tên (chẳng hạn như Product), và các MVC Framework sẽ tự
động thêm Controller ở tên này và bắt đầu tìm kiếm các lớp điều khiển .
Mẹo: Bạn có thể thay đổi hành vi này bằng cách tạo ra việc thực hiện
riêng của bạn về giao diện IControllerFactory, mà tôi mô tả trong
Chương 19.
Các quy ước cho lớp Views


Views và partial views đi vào thư mục / Views / Controllername. Ví dụ,
một views kết hợp với lớp ProductController sẽ đi trong thư mục /
Views / Product.

Mẹo: Chú ý rằng tôi bỏ qua phần Controller của lớp từ thư mục Views: /
Views / Product, không phải / Views / ProductController. Điều này có
vẻ khác với lúc đầu, nhưng nó nhanh chóng trở thành bản chất thứ hai.
Các MVC Framework dự kiến rằng giao diện mặc định cho một phương
thức action nên được đặt tên sau khi phương thức đó. Ví dụ, giao diện
mặc định kết hợp với một phương thức action được gọi là List nên được
gọi là List.cshtml. Như vậy, đối với phương thức List Action trong lớp
ProductController, giao diện mặc định được dự kiến sẽ được
/Views/Product/List.cshtml. Giao diện mặc định được sử dụng khi bạn
trả lại kết quả của gọi các Views phương thức trong một phương thức
hành động, như thế này:
...
return View();
...
Bạn có thể xác định một views khác nhau bằng tên, như thế này:
...
return View("MyOtherView");
...
Chú ý rằng tôi không bao gồm phần mở rộng tên file hoặc đường dẫn
đến view. Khi tìm kiếm một view, các MVC Framework sẽ tìm trong
thư mục tên sau Controller và sau đó trong thư mục / Views / Shared.
Điều này có nghĩa rằng tôi có thể đặt views đó sẽ được sử dụng bởi
nhiều hơn một controller trong thư mục / Views / Shared và framework
sẽ tìm thấy chúng.
Các quy ước cho Layouts


Các quy ước đặt tên cho layouts là tiền tố cho các tập tin với một kí tự
gạch dưới (_), và các file layout được đặt trong thư mục / Views
/Shared. Cách bố trí này được áp dụng cho tất cả các views theo mặc

định thông qua các tập tin /Views/_ViewStart.cshtml. Nếu bạn không
muốn layout mặc định áp dụng cho các views, bạn có thể thay đổi các
thiết lập trong _ViewStart.cshtml (hoặc xóa các tập tin hoàn toàn) để xác
định layout khác trong view, như thế này:
@
{
Layout = "∼/Views/Shared/_MyLayout.cshtml"; 341
}
Hoặc bạn có thể tắt bất cứ layout cho một view nhất định, như thế này:
@
{
Layout = null;
}
Gỡ lỗi ứng dụng MVC
Bạn gỡ lỗi một ứng dụng ASP.NET MVC cách chính xác giống như bạn
gỡ rối một ứng dụng Web Forms ASP.NET. Các debugger Visual Studio
là một công cụ mạnh mẽ và linh hoạt, với nhiều tính năng và công dụng.
Tôi chỉ có thể làm sơ qua bề mặt trong cuốn sách này, nhưng trong các
phần sau đó tôi chỉ cho bạn cách cài đặt các trình gỡ lỗi và thực hiện các
hoạt động sửa lỗi khác nhau về dự án MVC của bạn.
Chuẩn bị Example Project
Để chứng minh việc sử dụng chương trình gỡ rối, tôi đã tạo ra một dự
án mới sử dụng MVC dự án mẫu MVC, chỉ để bạn có thể thấy nội dung
và cấu hình mặc định được thiết lập và hiệu quả của các theme mặc định


được áp dụng cho views. Tôi gọi là DebuggingDemo project mới, như
thể hiện trong hình 14-3. Tôi đã lựa chọn các tùy chọn Individual User
Accounts, trong đó thiết lập một hệ thống bảo mật người dùng cơ bản.


Hình 14-3. Tạo một dự án mới sử dụng các dự án mẫu MVC
Nhấp vào nút OK và Visual Studio sẽ tạo dự án và thêm các gói mặc
định, các tập tin và thư mục mà các mẫu MVC bao gồm. Bạn có thể thấy
các tập tin và cài đặt thêm vào dự án được áp dụng bằng cách bắt đầu
ứng dụng, như thể hiện trong hình 14-4.


Hình 14-4. Hiệu quả của việc bổ sung thực hiện bằng các dự án mẫu
MVC
Có một số yếu tố giữ cho tên của ứng dụng và xây dựng thương hiệu, và
một số gợi ý để các tài liệu MVC, NuGet, và một số tùy chọn lưu trữ.
Các thanh điều hướng ở phía trên cùng của màn hình là loại giống nhau
tôi sử dụng cho các ứng dụng SportsStore và cách bố trí có một số tính
năng đáp ứng. Thay đổi độ rộng của cửa sổ để nhìn thấy hiệu quả.
Tạo Controller


Visual Studio tạo Home controller như là một phần của nội dung dự án
ban đầu, nhưng tôi sẽ phải thay thế mã mà Visual Studio thêm vào như
được hiển thị trong Liệt kê 14-1.
Liệt kê 14-1: Nội dung của tập tin HomeController.cs
using System.Web.Mvc;
namespace DebuggingDemo.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
int firstVal = 10;
int secondVal = 5;

int result = firstVal / secondVal;
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View(result);
}
}
}
Tạo View
Visual Studio cũng tạo ra Views / Home / Index.cshtml xem tập tin như
là một phần của các thiết lập dự án. Tôi không cần những nội dung mặc
định và phải thay thế nó với các đánh dấu trong Ví dụ 14-2.
Bảng liệt kê 14-2. Nội dung của File Index.cshtml


Các bước chuẩn bị cuối cùng tôi cần phải thực hiện thêm một phong
cách cho các tập tin /Content/Site.css và thay đổi một trong những cái
hiện có, như thể hiện trong Liệt kê 14-3. Các tập tin Site.css được tạo ra
bởi Visual Studio như là một phần của dự án mẫu MVC và là vị trí mặc
định cho phong cách ứng dụng CSS. (Tôi đã thêm một yếu tố liên kết để
xem trong Liệt kê 14-2 import file này vào xem Index.cshtml.)
Bảng liệt kê 14-3. Thêm một Style vào /Content/Site.css file
body { padding-top: 5px; padding-bottom: 5px; }
.field-validation-error { color: #b94a48; } 344
.field-validation-valid { display: none; }
input.input-validation-error { border: 1px solid #b94a48; }
input[type="checkbox"].input-validation-error { border: 0 none; }
.validation-summary-errors { color: #b94a48; }
.validation-summary-valid { display: none; }
.no-color { background-color: white; border-style:none; }
.message { font-size: 20pt; text-decoration: underline;}



Khởi động Visual Studio Debugger
Visual Studio chuẩn bị dự án mới để gỡ lỗi tự động, mà nó rất hữu ích
để hiểu làm thế nào để thay đổi cấu hình. Các thiết lập quan trọng là
trong file Web.config trong thư mục dự án gốc và có thể được tìm thấy
trong các yếu tố system.web, như thể hiện trong Liệt kê 14-4.
Bảng liệt kê 14-4. Đặc tính gỡ lỗi trong file Web.config
...
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
</system.web>
...
Rất nhiều biên soạn trong một dự án MVC Framework được thực hiện
khi các ứng dụng đang chạy trong IIS, và do đó, bạn cần phải đảm bảo
rằng các thuộc tính debug trên thuộc tính biên dịch được thiết lập để
thực trong quá trình phát triển. Điều này đảm bảo rằng chương trình gỡ
rối có thể hoạt động trên các tập tin các lớp tạo thông qua theo yêu cầu
biên soạn.
Cẩn trọng: Không triển khai ứng dụng của bạn đến một production
server mà không thiết lập các giá trị debug thành false. Nếu bạn đang sử
dụng Visual Studio để triển khai các ứng dụng của bạn (như tôi đã làm
trong Chương 13), sau đó thiết lập sẽ được thay đổi tự động khi bạn
chọn cấu hình Release cho dự án.
Ngoài các tập tin Web.config, tôi muốn đảm bảo rằng Visual Studio bao
gồm cả thông tin gỡ lỗi trong các tập tin lớp nó tạo ra. Đây không phải là
nghiêm trọng, mà nó có thể gây ra vấn đề nếu các cài đặt gỡ lỗi khác
nhau không được đồng bộ. Đảm bảo rằng cấu hình gỡ lỗi được chọn
trong thanh công cụ Visual Studio, như thể hiện trong hình 14-5.



Hình 14-5. Chọn cấu hình gỡ lỗi
Để gỡ rối một ứng dụng MVC Framework, chọn Start Debugging từ
Visual Studio menu Debug hoặc nhấp vào mũi tên màu xanh lá cây
trong thanh công cụ Visual Studio (mà bạn có thể thấy trong hình 14-5,
bên cạnh tên của các trình duyệt đó sẽ được sử dụng để hiển thị các ứng
dụng-Internet Explorer trong trường hợp này).
Nếu thuộc tính debug trong file Web.config được thiết đặt là false khi
bạn khởi động trình gỡ lỗi, sau đó Visual Studio sẽ hiển thị hộp thoại thể
hiện trong hình 14-6. Chọn các tùy chọn cho phép Visual Studio để
chỉnh sửa các tập tin Web.config và nhấp vào nút OK và gỡ lỗi sẽ bắt
đầu.


Hình 14-6. Hộp thoại hiển thị Visual Studio khi file Web.config tắt
debug
Tại thời điểm này, ứng dụng của bạn sẽ được hiển thị trong một cửa sổ
trình duyệt mới, như thể hiện trong hình 14-7.

Hình 14-7. Chạy các debugger
Các debugger sẽ được gắn vào ứng dụng của bạn, nhưng bạn sẽ không
nhận thấy bất kỳ sự khác biệt cho đến khi ngắt debugger. (Tôi giải thích
điều này có nghĩa là gì trong phần tiếp theo). Để chấm dứt các debugger,


chọn Stop Debugging từ Visual Studio Debug memnu hoặc đóng cửa sổ
trình duyệt.
Causing the Visual Studio Debugger to Break
Một ứng dụng đang chạy với các debugger kèm theo sẽ hoạt động bình
thường cho đến khi một break xảy ra, tại thời điểm thực hiện các ứng

dụng được chặn đứng và điều khiển được chuyển qua cho các debugger.
Trong khi ở trạng thái này, bạn có thể kiểm tra, kiểm soát tình trạng của
ứng dụng. Breaks xảy ra vì hai lý do chính: khi một breakpoint là vượt
quá và khi có lỗi nào phát sinh. Bạn sẽ thấy ví dụ về cả trong các phần
sau.
Cách sử dụng Breakpoints
Một breakpoint là một hướng dẫn mà nói với các debugger để ngưng
thực hiện các ứng dụng và điều khiển bằng tay cho người lập trình viên.
Bạn có thể kiểm tra trạng thái của các ứng dụng và xem những gì đang
xảy ra và tùy chọn, tiếp tục thực hiện một lần nữa. Để tạo ra một
breakpoint, kích chuột phải vào một mã lệnh và chọn Breakpoint
Breakpoint Insert từ menu pop-up. Như một minh chứng, áp dụng một
breakpoint ở câu lệnh đầu tiên trong phương thức hành động Index của
bộ điều khiển Home và bạn sẽ thấy một chấm đỏ xuất hiện ở lề của soạn
thảo văn bản, như thể hiện trong hình 14-8.


Hình 14-8. Áp dụng một breakpoint để câu lệnh đầu tiên trong các
phương thức hành động Index
Để xem hiệu quả của các breakpoint, bắt đầu gỡ lỗi bằng cách chọn Start
Debugging từ Visual Studio Menu Debug. Các ứng dụng sẽ chạy đến
khi câu lệnh mà breakpoint đã được ứng dụng là vượt quá, lúc này các
debugger sẽ phá vỡ, ngừng thực thi ứng dụng và chuyển giao quyền
kiểm soát. Visual Studio nêu bật những điểm mà tại đó thực hiện đã
được dừng lại với điểm nổi bật màu vàng, như thể hiện trong hình 14-9.


Hình 14-9. Chạm mức breakpoint
Lưu ý : Một breakpoint được kích hoạt chỉ khi câu lệnh gắn liền với thực
thi. Ví dụ breakpoint của tôi đã đạt được ngay sau khi các ứng dụng

được bắt đầu bởi vì nó nằm bên trong phương thức hành động đó được
gọi khi một yêu cầu cho các URL mặc định là nhận được. Nếu bạn đặt
một breakpoint bên trong một phương pháp hành động, bạn phải sử dụng
trình duyệt yêu cầu một URL có liên quan với phương thức đó. Điều này
có nghĩa là làm việc với các ứng dụng theo cách một người dùng muốn
hay điều hướng trực tiếp đến các URL trong cửa sổ trình duyệt. Một khi
bạn có quyền kiểm soát thực thi của ứng dụng, bạn có thể di chuyển đến
các câu lệnh tiếp theo, thực thi các phương thức khác và thông thường là
khám phá những trạng thái của ứng dụng của bạn. Bạn có thể làm điều
này bằng cách sử dụng các nút trên thanh công cụ hoặc sử dụng các mục
trong Visual Studio Menu Debug. Ngoài ra để tạo cho bạn kiểm soát
việc thực hiện các ứng dụng, Visual Studio cung cấp cho bạn rất nhiều


thông tin hữu ích về tình trạng của ứng dụng của bạn. Trong thực tế, có
rất nhiều thông tin mà tôi chỉ phòng để cho bạn thấy những điều cơ bản.
Xem Values Data trong Code Editor
Việc sử dụng phổ biến nhất cho là để theo dõi các lỗi trong code của
bạn. Trước khi bạn có thể sửa chữa một lỗi, bạn phải tìm ra những gì
đang xảy ra và một trong những tính năng hữu ích nhất mà Visual Studio
cung cấp là khả năng xem và giám sát những giá trị của các biến ngay
trong trình soạn thảo mã.


Tóm tắt
Trong chương này, chúng tôi đã giới cấu trúc của một dự án
Visual Studio MVC và làm thế nào các bộ phận khác nhau phù hợp với
nhau. Tôi cũng đề cập về một trong những đặc điểm quan trọng nhất của
MVC Framework: các quy ước. Đây là những chủ đề mà tôi sẽ quay trở
lại một lần nữa và một lần nữa trong các chương tiếp theo, như tôi đi sâu

hơn vào cách MVC Framework hoạt động.



×