Ứng dụng mvc cơ bản - dammio.com · Ứng dụng mvc cơ bản 3. thêm view Để thêm 1...

66
Ứng dụng MVC cơ bản 3. Thêm View Trong phần này sẽ thêm các View (giao diện) cho ứng dụng MVC. Các View được thể hiện bằng cú pháp Razor với tập tin có đuôi .cshtml. Razor giảm thiểu số lượng ký tự và từ khóa để hiển Razor giảm thiểu số lượng ký tự và từ khóa để hiển thị HTML khi lập trình. Tìm hiểu về Razor: http://www.w3schools.com/aspnet/razor_intro.asp Tạ Hoàng Thắng 1

Upload: others

Post on 10-Sep-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Ứng dụng MVC cơ bản3. Thêm ViewTrong phần này sẽ thêm các View (giao diện) choứng dụng MVC.Các View được thể hiện bằng cú pháp Razor với tậptin có đuôi .cshtml.Razor giảm thiểu số lượng ký tự và từ khóa để hiểnthị HTML khi lập trình.

Tìm hiểu về Razor:http://www.w3schools.com/aspnet/razor_intro.asp

3. Thêm ViewTrong phần này sẽ thêm các View (giao diện) choứng dụng MVC.Các View được thể hiện bằng cú pháp Razor với tậptin có đuôi .cshtml.Razor giảm thiểu số lượng ký tự và từ khóa để hiểnthị HTML khi lập trình.

Tìm hiểu về Razor:http://www.w3schools.com/aspnet/razor_intro.asp

Tạ Hoàng Thắng 1

Ứng dụng MVC cơ bản3. Thêm ViewKhi tạo Controller tên là HelloWorldControllerthì mặc định ở file code chứa phương thứcIndex() sẽ trả về View với kiểu ActionResult.public ActionResult Index(){ return View(); }Và đồng thời là thư mục HelloWord rỗng nằmtrong thư mục Views

3. Thêm ViewKhi tạo Controller tên là HelloWorldControllerthì mặc định ở file code chứa phương thứcIndex() sẽ trả về View với kiểu ActionResult.public ActionResult Index(){ return View(); }Và đồng thời là thư mục HelloWord rỗng nằmtrong thư mục Views

Tạ Hoàng Thắng 2

Ứng dụng MVC cơ bản3. Thêm ViewĐể thêm 1 View, chuột phải vào thư mụcViews/HelloWord, chọn Add, sau đó là MVC 5View Page with (Layout Razor).

Tạ Hoàng Thắng 3

Ứng dụng MVC cơ bản3. Thêm ViewĐiền tên cho View mới là Index

Tạ Hoàng Thắng 4

Ứng dụng MVC cơ bản3. Thêm ViewBước tiếp là chọn layout (bố cục) cho View Indexvừa tạo, mặc định là _Layout.cshtml

Tạ Hoàng Thắng 5

Ứng dụng MVC cơ bản3. Thêm ViewỞ thư mục Shared chứa các layout mặc định, cóthể tạo thêm layout nếu cần.MVC Layout là 1 kỹ thuật tương tự như MasterPages ở mô hình Web page thông thường.Sau khi thêm 1 View tên là Index thì file mớiMvcMovie\Views\HelloWorld\Index.cshtmlđược tạo.

3. Thêm ViewỞ thư mục Shared chứa các layout mặc định, cóthể tạo thêm layout nếu cần.MVC Layout là 1 kỹ thuật tương tự như MasterPages ở mô hình Web page thông thường.Sau khi thêm 1 View tên là Index thì file mớiMvcMovie\Views\HelloWorld\Index.cshtmlđược tạo.

Tạ Hoàng Thắng 6

Ứng dụng MVC cơ bản3. Thêm ViewMở nội dung file Index.cshtml thêm đoạn mã@{

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

ViewBag.Title = "Index";}<h2>Index</h2><p>Hello from our View Template!</p>

3. Thêm ViewMở nội dung file Index.cshtml thêm đoạn mã@{

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

ViewBag.Title = "Index";}<h2>Index</h2><p>Hello from our View Template!</p>

Tạ Hoàng Thắng 7

Ứng dụng MVC cơ bản3. Thêm ViewGiải thích đoạn mã trên:• @{…} là cú pháp Razor• Layout = "~/Views/Shared/_Layout.cshtml"; đặtmặc định layout của trang là _Layout.cshtml• ViewBag.Title = "Index"; là thiết lập tiêu đề trangcho trang

– ViewBag là 1 thuộc tính cho phép lấy các giá trị được chiasẽ động từ Controller lên View.

– ViewBag là đối tượng động và không có kiểu định nghĩatrước.

3. Thêm ViewGiải thích đoạn mã trên:• @{…} là cú pháp Razor• Layout = "~/Views/Shared/_Layout.cshtml"; đặtmặc định layout của trang là _Layout.cshtml• ViewBag.Title = "Index"; là thiết lập tiêu đề trangcho trang

– ViewBag là 1 thuộc tính cho phép lấy các giá trị được chiasẽ động từ Controller lên View.

– ViewBag là đối tượng động và không có kiểu định nghĩatrước.

Tạ Hoàng Thắng 8

Ứng dụng MVC cơ bản3. Thêm ViewTiếp theo chuột phải lên tập tin Index.cshtml và duyệt

Tạ Hoàng Thắng 9

Ứng dụng MVC cơ bản3. Thêm ViewTrên trình duyệt đường dẫnhttp://localhost:xxxx/HelloWorld/Welcome được kíchhoạt.Giải thích cách chạy???

Tạ Hoàng Thắng 10

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutTất cả các trang View thông thường sử dụng 1 Layoutduy nhất đó là _Layout.cshtml ở thưmục /Views/Shared.Thay đổi nội dung _Layout.cshtml tức là thay đổi bốcục cho tất cả trang View dùng trang này làm trangLayout.

4. Thay đổi View và các trang LayoutTất cả các trang View thông thường sử dụng 1 Layoutduy nhất đó là _Layout.cshtml ở thưmục /Views/Shared.Thay đổi nội dung _Layout.cshtml tức là thay đổi bốcục cho tất cả trang View dùng trang này làm trangLayout.

Tạ Hoàng Thắng 11

Ứng dụng MVC cơ bản4. Thay đổi View và các trang Layout

[email protected]

@Styles.Render("~/Content/css")@Scripts.Render("~/bundles/modernizr")

BODYRenderBody()

[email protected]("~/bundles/jquery")

@Scripts.Render("~/bundles/bootstrap")@RenderSection("scripts", required: false)

View

Tạ Hoàng Thắng 12

[email protected]

@Styles.Render("~/Content/css")@Scripts.Render("~/bundles/modernizr")

BODYRenderBody()

[email protected]("~/bundles/jquery")

@Scripts.Render("~/bundles/bootstrap")@RenderSection("scripts", required: false)

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutMột vài nội dung trang _Layout.cshtml<!DOCTYPE html><html><head>

<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-

scale=1.0"><title>@ViewBag.Title - Movie App</title>@Styles.Render("~/Content/css")@Scripts.Render("~/bundles/modernizr")

</head>

4. Thay đổi View và các trang LayoutMột vài nội dung trang _Layout.cshtml<!DOCTYPE html><html><head>

<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-

scale=1.0"><title>@ViewBag.Title - Movie App</title>@Styles.Render("~/Content/css")@Scripts.Render("~/bundles/modernizr")

</head>

Tạ Hoàng Thắng 13

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutMột vài nội dung trang _Layout.cshtml<div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li>@Html.ActionLink("Home", "Index", "Home")</li><li>@Html.ActionLink("About", "About", "Home")</li><li>@Html.ActionLink("Contact", "Contact", "Home")</li></ul></div>

4. Thay đổi View và các trang LayoutMột vài nội dung trang _Layout.cshtml<div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li>@Html.ActionLink("Home", "Index", "Home")</li><li>@Html.ActionLink("About", "About", "Home")</li><li>@Html.ActionLink("Contact", "Contact", "Home")</li></ul></div>

Tạ Hoàng Thắng 14

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutMột vài nội dung trang _Layout.cshtml<div class="container body-content"> @RenderBody()<hr /><footer><p>&copy; @DateTime.Now.Year - My ASP.NET Application</p></footer> </div>@Scripts.Render("~/bundles/jquery")@Scripts.Render("~/bundles/bootstrap")@RenderSection("scripts", required: false)

4. Thay đổi View và các trang LayoutMột vài nội dung trang _Layout.cshtml<div class="container body-content"> @RenderBody()<hr /><footer><p>&copy; @DateTime.Now.Year - My ASP.NET Application</p></footer> </div>@Scripts.Render("~/bundles/jquery")@Scripts.Render("~/bundles/bootstrap")@RenderSection("scripts", required: false)

Tạ Hoàng Thắng 15

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutMột số cú pháp Razor• @ViewBag.Title là biến tiêu đề, biến này đượctruyền từ Controller sang.• @Html.ActionLink("Home", "Index", "Home") làdạng hyperlink, chính là thẻ

– <a href=“Index/Home”>Home</a>– Xem thêm:

http://www.w3schools.com/aspnet/mvc_htmlhelpers.asp

4. Thay đổi View và các trang LayoutMột số cú pháp Razor• @ViewBag.Title là biến tiêu đề, biến này đượctruyền từ Controller sang.• @Html.ActionLink("Home", "Index", "Home") làdạng hyperlink, chính là thẻ

– <a href=“Index/Home”>Home</a>– Xem thêm:

http://www.w3schools.com/aspnet/mvc_htmlhelpers.asp

Tạ Hoàng Thắng 16

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutMột số cú pháp Razor• @RenderBody() là nội dung của trang View khi sửdụng trang _Layout.cshtml làm trang Layout.• @Scripts.Render("~/bundles/jquery") là thiết lậpthẻ script cho đường dẫn "~/bundles/jquery”, với dấu ~là đường dẫn gốc của website.• @Styles.Render(“~/Content/css”) là thiết lập phongcách cho đường dẫn “~/Content/css” với ~ là đườngdẫn gốc của website.

4. Thay đổi View và các trang LayoutMột số cú pháp Razor• @RenderBody() là nội dung của trang View khi sửdụng trang _Layout.cshtml làm trang Layout.• @Scripts.Render("~/bundles/jquery") là thiết lậpthẻ script cho đường dẫn "~/bundles/jquery”, với dấu ~là đường dẫn gốc của website.• @Styles.Render(“~/Content/css”) là thiết lập phongcách cho đường dẫn “~/Content/css” với ~ là đườngdẫn gốc của website.

Tạ Hoàng Thắng 17

Ứng dụng MVC cơ bản4. Thay đổi View và các trang LayoutTạo trang Views\HelloWorld\Index.cshtml với mã:@{// Có thể thay đổi Layout khácLayout = "~/Views/Shared/_Layout.cshtml";}

Đoạn mã này trùng với đoạn mã ở tập tinViews/_ViewStart.cshtml nên có thể bỏ đi ở tập tinIndex.cshtmlLưu ý: nếu xóa đoạn mã này ở _ViewStart.cshtml thìcác trang View sẽ không áp dụng _Layout.cshtml làmtrang Layout nữa.

4. Thay đổi View và các trang LayoutTạo trang Views\HelloWorld\Index.cshtml với mã:@{// Có thể thay đổi Layout khácLayout = "~/Views/Shared/_Layout.cshtml";}

Đoạn mã này trùng với đoạn mã ở tập tinViews/_ViewStart.cshtml nên có thể bỏ đi ở tập tinIndex.cshtmlLưu ý: nếu xóa đoạn mã này ở _ViewStart.cshtml thìcác trang View sẽ không áp dụng _Layout.cshtml làmtrang Layout nữa.

Tạ Hoàng Thắng 18

Ứng dụng MVC cơ bản4. Thay đổi View và các trang Layout Index.cshtmlSau đó thêm đoạn mã vào trang Index.cshtml

@{ ViewBag.Title = "Index"; }<h2>Index</h2><p>Hello from our View Template!</p>Chỉnh ViewBag.Title thành tiêu đề trang tên là MovieList, sau đó chạy View Index.cshtml.

4. Thay đổi View và các trang Layout Index.cshtmlSau đó thêm đoạn mã vào trang Index.cshtml

@{ ViewBag.Title = "Index"; }<h2>Index</h2><p>Hello from our View Template!</p>Chỉnh ViewBag.Title thành tiêu đề trang tên là MovieList, sau đó chạy View Index.cshtml.

Tạ Hoàng Thắng 19

Ứng dụng MVC cơ bản5. Chuyển dữ liệu từ Controller sang ViewController gọi View thông qua câu lệnh return View();ở phương thức nào đó bất kỳ ở Controller.

Ví dụ:Ở HelloWorldController có phương thức Indexpublic ActionResult Index() { return View(); }

5. Chuyển dữ liệu từ Controller sang ViewController gọi View thông qua câu lệnh return View();ở phương thức nào đó bất kỳ ở Controller.

Ví dụ:Ở HelloWorldController có phương thức Indexpublic ActionResult Index() { return View(); }

Tạ Hoàng Thắng 20

Ứng dụng MVC cơ bản5. Chuyển dữ liệu từ Controller sang ViewĐể chuyển dữ liệu qua View, chỉ cần sử dụng biến ViewBaghoặc các kiểu dữ liệu khác sau đó trả về View thông qua câulệnh return View(…).

Ví dụ: Ở HelloWorldController có phương thức

5. Chuyển dữ liệu từ Controller sang ViewĐể chuyển dữ liệu qua View, chỉ cần sử dụng biến ViewBaghoặc các kiểu dữ liệu khác sau đó trả về View thông qua câulệnh return View(…).

Ví dụ: Ở HelloWorldController có phương thức

Tạ Hoàng Thắng 21

Ứng dụng MVC cơ bản5. Chuyển dữ liệu từ Controller sang ViewLúc này, ViewBag đã tự động đẩy dữ liệu về View. Tạo fileWelcome.cshtml dùng _Layout.cshtml làm Layout, sau đóchèn đoạn mã:

Tạ Hoàng Thắng 22

Ứng dụng MVC cơ bản5. Chuyển dữ liệu từ Controller sang ViewSau đó, chạy URL:http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4 để hiển thị kết quả:

Tạ Hoàng Thắng 23

Ứng dụng MVC cơ bản5. Chuyển dữ liệu từ Controller sang View

Để hiển thị kết quả y như slide trước với đường dẫn:http://localhost:xx/HelloWorld/Welcome/Scott/4thì cần phải làm gì?

Tạ Hoàng Thắng 24

Ứng dụng MVC cơ bản5. Chuyển dữ liệu từ Controller sang ViewTrong ví dụ trên, biến ViewBag được dùng để đẩy dữliệu từ Controller sang View.Ngoài ra, người ta còn dùng View Model để đẩy dữ liệutừ Controller sang View. Cách này được dùng thôngdụng và ưa chuộng hơn ViewBag.

Xem thêm:https://blogs.msdn.microsoft.com/rickandy/2011/01/28/dynamic-v-strongly-typed-views/

5. Chuyển dữ liệu từ Controller sang ViewTrong ví dụ trên, biến ViewBag được dùng để đẩy dữliệu từ Controller sang View.Ngoài ra, người ta còn dùng View Model để đẩy dữ liệutừ Controller sang View. Cách này được dùng thôngdụng và ưa chuộng hơn ViewBag.

Xem thêm:https://blogs.msdn.microsoft.com/rickandy/2011/01/28/dynamic-v-strongly-typed-views/

Tạ Hoàng Thắng 25

Ứng dụng MVC cơ bản5. Thêm ModelPhần này sẽ thêm các lớp để quản lý các bảng dữ liệu ởdatabase.Thông thường dùng Entity Framework để định nghĩamô hình và các lớp mã nguồn.EF cũng support Code First, Database First hay ModelFirst ở phần Model.Có thể nhúng dự án thư viện mô hình DLL ở bên ngoàithay thế cho phần Model.

5. Thêm ModelPhần này sẽ thêm các lớp để quản lý các bảng dữ liệu ởdatabase.Thông thường dùng Entity Framework để định nghĩamô hình và các lớp mã nguồn.EF cũng support Code First, Database First hay ModelFirst ở phần Model.Có thể nhúng dự án thư viện mô hình DLL ở bên ngoàithay thế cho phần Model.

Tạ Hoàng Thắng 26

Ứng dụng MVC cơ bản5. Thêm ModelCách thêm Model dùng Code FirstChuột phải lên thư mục Models, chọn Add -> Class

Tạ Hoàng Thắng 27

Ứng dụng MVC cơ bản5. Thêm ModelĐặt tên lớp là Movie với nội dung:namespace MvcMovie.Models{

public class Movie{

public int ID { get; set; } public string Title { get; set; }public DateTime ReleaseDate { get; set; }public string Genre { get; set; }public decimal Price { get; set; }

}}

5. Thêm ModelĐặt tên lớp là Movie với nội dung:namespace MvcMovie.Models{

public class Movie{

public int ID { get; set; } public string Title { get; set; }public DateTime ReleaseDate { get; set; }public string Genre { get; set; }public decimal Price { get; set; }

}}

Tạ Hoàng Thắng 28

Ứng dụng MVC cơ bản5. Thêm ModelTiếp theo thêm DbContext thông qua lớpMovieDBContext cũng ở Movie.cs

using System.Data.Entity;public class MovieDBContext : DbContext{

public DbSet<Movie> Movies { get; set; }}

5. Thêm ModelTiếp theo thêm DbContext thông qua lớpMovieDBContext cũng ở Movie.cs

using System.Data.Entity;public class MovieDBContext : DbContext{

public DbSet<Movie> Movies { get; set; }}

Tạ Hoàng Thắng 29

Ứng dụng MVC cơ bản5. Thêm ModelTiếp theo thêm DbContext thông qua lớpMovieDBContext cũng ở Movie.cs

public class MovieDBContext : DbContext{

public DbSet<Movie> Movies { get; set; }}

5. Thêm ModelTiếp theo thêm DbContext thông qua lớpMovieDBContext cũng ở Movie.cs

public class MovieDBContext : DbContext{

public DbSet<Movie> Movies { get; set; }}

Tạ Hoàng Thắng 30

Ứng dụng MVC cơ bản5. Thêm ModelThêm các thư viện cần thiết cho lớp Movie tương ứngvới lớp DbContext, chọn chuột phải lên DbContext,chọn Resolve -> using System.Data.Entity

Tạ Hoàng Thắng 31

Ứng dụng MVC cơ bản5. Thêm ModelTương tự nếu loại bỏ các lớp không dùng đến, dùngOrganize Usings -> Remove Unused Usings

Tạ Hoàng Thắng 32

Ứng dụng MVC cơ bản6. Tạo chuỗi kết nối và làm việc với SQL ServerLocalDBVào Web.config để chỉnh kết nối với database

Tạ Hoàng Thắng 33

Ứng dụng MVC cơ bản6. Tạo chuỗi kết nối và làm việc với SQL ServerLocalDBNếu Model dùng Code First thì không cần tạo databasettrước, mặc định VS sẽ tạo database khi có tương tácvới các lớp mô hình.

Database sẽ tự tạo vớitên MvcMovie.Models.MovieDBContext

6. Tạo chuỗi kết nối và làm việc với SQL ServerLocalDBNếu Model dùng Code First thì không cần tạo databasettrước, mặc định VS sẽ tạo database khi có tương tácvới các lớp mô hình.

Database sẽ tự tạo vớitên MvcMovie.Models.MovieDBContext

Tạ Hoàng Thắng 34

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerChuột phải lên thư mục Controllers -> Controller đểthêm 1 Controller mới.

Tạ Hoàng Thắng 35

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerTrong mục Add Scaffold, chọn MVC5 Controller withviews, using Entity Framework

Tạ Hoàng Thắng 36

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerTên lớp là MoviesController, mô hình lớp Movie(MvcMovie.Models), chọn MovieDBContext(MvcMovie.Models) cho lớp Context

Tạ Hoàng Thắng 37

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerSau đó nhấn Add để thêm Controller mới, VS sẽ tạo racác tập tin:• MoviesController.cs ở thư mục Controllers• Thư mục Views\Movies• Các tập tin Create.cshtml, Delete.cshtml,Details.cshtml, Edit.cshtml, và Index.cshtml ở thưmục Views\Movies folder.

7. Truy cập dữ liệu Model từ ControllerSau đó nhấn Add để thêm Controller mới, VS sẽ tạo racác tập tin:• MoviesController.cs ở thư mục Controllers• Thư mục Views\Movies• Các tập tin Create.cshtml, Delete.cshtml,Details.cshtml, Edit.cshtml, và Index.cshtml ở thưmục Views\Movies folder.

Tạ Hoàng Thắng 38

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerVS sẽ tự động tạo các phương thức CRUD (create, read,update, và delete) và các View tương ứng.Chạy URL http://localhost:xxxxx/Movies

Tạ Hoàng Thắng 39

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Modeltừ ControllerChọn Create New thì giaodiện tạo mới hiển thị vớiđường dẫnhttp://localhost:xxxxx/Movies/Create

7. Truy cập dữ liệu Modeltừ ControllerChọn Create New thì giaodiện tạo mới hiển thị vớiđường dẫnhttp://localhost:xxxxx/Movies/Create

Tạ Hoàng Thắng 40

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerSau khi tạo mới 1 Movie thì ở trang Index sẽ hiển thịMovie này

Tạ Hoàng Thắng 41

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerỞ tập tin Controllers\MoviesController.cs, phương thứcIndex như sau

Tạ Hoàng Thắng 42

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerController chuyển dữ liệu sang View thông qua biến ViewBag vàModel. Ở MoviesController.cs , phương thức Detail như sau:

Tạ Hoàng Thắng 43

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerGiải thích phương thức Details:• int?• http://localhost:1234/movies/details/1• http://localhost:1234/movies/details?id=1• return View(movie);

7. Truy cập dữ liệu Model từ ControllerGiải thích phương thức Details:• int?• http://localhost:1234/movies/details/1• http://localhost:1234/movies/details?id=1• return View(movie);

Tạ Hoàng Thắng 44

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerNội dung Views\Movies\Details.cshtml

@model MvcMovie.Models.Movie@{ ViewBag.Title = "Details"; }<h2>Details</h2><div> <h4>Movie</h4> <hr /><dl class="dl-horizontal"><dt> @Html.DisplayNameFor(model => model.Title)</dt>@*Markup omitted for clarity.*@</dl> </div>

7. Truy cập dữ liệu Model từ ControllerNội dung Views\Movies\Details.cshtml

@model MvcMovie.Models.Movie@{ ViewBag.Title = "Details"; }<h2>Details</h2><div> <h4>Movie</h4> <hr /><dl class="dl-horizontal"><dt> @Html.DisplayNameFor(model => model.Title)</dt>@*Markup omitted for clarity.*@</dl> </div> Tạ Hoàng Thắng 45

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerNội dung Views\Movies\Details.cshtml

@model MvcMovie.Models.Movie@{ViewBag.Title = "Details";}<h2>Details</h2>

7. Truy cập dữ liệu Model từ ControllerNội dung Views\Movies\Details.cshtml

@model MvcMovie.Models.Movie@{ViewBag.Title = "Details";}<h2>Details</h2>

Tạ Hoàng Thắng 46

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerNội dung Views\Movies\Details.cshtml

Tạ Hoàng Thắng 47

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerGiải thích Views\Movies\Details.cshtml:• @model MvcMovie.Models.Movie• @Html.DisplayNameFor(model => model.Title)• @Html.ActionLink("Edit", "Edit", new { id = Model.ID })• @Html.ActionLink("Back to List", "Index")

7. Truy cập dữ liệu Model từ ControllerGiải thích Views\Movies\Details.cshtml:• @model MvcMovie.Models.Movie• @Html.DisplayNameFor(model => model.Title)• @Html.ActionLink("Edit", "Edit", new { id = Model.ID })• @Html.ActionLink("Back to List", "Index")

Tạ Hoàng Thắng 48

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerPhương thức Index ở MoviesController.cs

public ActionResult Index(){

return View(db.Movies.ToList());}

7. Truy cập dữ liệu Model từ ControllerPhương thức Index ở MoviesController.cs

public ActionResult Index(){

return View(db.Movies.ToList());}

Tạ Hoàng Thắng 49

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerỞ Index.cshtml chứa chỉ thị ở đầu file:

@model IEnumerable<MvcMovie.Models.Movie>

@model cho phép tạo ra danh sách đối tượng Movie,từ đó có thể dùng vòng lặp foreach để hiển thị dữ liệutrên View.

7. Truy cập dữ liệu Model từ ControllerỞ Index.cshtml chứa chỉ thị ở đầu file:

@model IEnumerable<MvcMovie.Models.Movie>

@model cho phép tạo ra danh sách đối tượng Movie,từ đó có thể dùng vòng lặp foreach để hiển thị dữ liệutrên View.

Tạ Hoàng Thắng 50

Ứng dụng MVC cơ bản7. Truy cập dữ liệu Model từ ControllerFile Index.cshtml

Tạ Hoàng Thắng 51

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewMở tập tinModels\Movie.cs, chú ý các chỗ:

using System.ComponentModel.DataAnnotations;...[Display(Name = "Release Date")][DataType(DataType.Date)][DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]public DateTime ReleaseDate { get; set; }…

8. Tìm hiểu các phương thức Edit và Edit ViewMở tập tinModels\Movie.cs, chú ý các chỗ:

using System.ComponentModel.DataAnnotations;...[Display(Name = "Release Date")][DataType(DataType.Date)][DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]public DateTime ReleaseDate { get; set; }…

Tạ Hoàng Thắng 52

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewCó thể thay dòng

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

bằng dòng[DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode = true)]

8. Tìm hiểu các phương thức Edit và Edit ViewCó thể thay dòng

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

bằng dòng[DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode = true)]

Tạ Hoàng Thắng 53

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewGiải thích các định nghĩa hiển thị cho thuộc tính publicReleaseDate• [Display(Name = "Release Date")]• [DataType(DataType.Date)]• [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

8. Tìm hiểu các phương thức Edit và Edit ViewGiải thích các định nghĩa hiển thị cho thuộc tính publicReleaseDate• [Display(Name = "Release Date")]• [DataType(DataType.Date)]• [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

Tạ Hoàng Thắng 54

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewChạy URL http://localhost:xxxx/Movies , rê chuột lênliên kết Edit thì thấy liên kết

Tạ Hoàng Thắng 55

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewLiên kết Edit sinh từ đoạn mã:@Html.ActionLink("Edit", "Edit", new { id=item.ID })Đường dẫn http://localhost:1234/Movies/Edit/4 hoặchttp://localhost:1234/Movies/Edit?ID=3được định nghĩa ở App_Start\RouteConfig.cs

8. Tìm hiểu các phương thức Edit và Edit ViewLiên kết Edit sinh từ đoạn mã:@Html.ActionLink("Edit", "Edit", new { id=item.ID })Đường dẫn http://localhost:1234/Movies/Edit/4 hoặchttp://localhost:1234/Movies/Edit?ID=3được định nghĩa ở App_Start\RouteConfig.cs

Tạ Hoàng Thắng 56

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewỞ Movie Controller, có 2 phương thứ Edit như sau:

Tạ Hoàng Thắng 57

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewỞ Movie Controller, có 2 phương thứ Edit như sau:

Tạ Hoàng Thắng 58

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewPhương thức Edit thứ 2

Tạ Hoàng Thắng 59

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewGiải thích 2 phương thức Edit:• [HttpPost]• Mặc định là [HttpGet]• [ValidateAntiForgeryToken]: Represents an attributethat is used to prevent forgery of a request.

– Xem thêm:http://go.microsoft.com/fwlink/?LinkId=317598, phầnOverPosting

8. Tìm hiểu các phương thức Edit và Edit ViewGiải thích 2 phương thức Edit:• [HttpPost]• Mặc định là [HttpGet]• [ValidateAntiForgeryToken]: Represents an attributethat is used to prevent forgery of a request.

– Xem thêm:http://go.microsoft.com/fwlink/?LinkId=317598, phầnOverPosting

Tạ Hoàng Thắng 60

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewTập tin Views\Movies\Edit.cshtml chứa đoạn mã@Html.AntiForgeryToken()

Dùng chặn giả mạo từ một Request ở Client.

8. Tìm hiểu các phương thức Edit và Edit ViewTập tin Views\Movies\Edit.cshtml chứa đoạn mã@Html.AntiForgeryToken()

Dùng chặn giả mạo từ một Request ở Client.

Tạ Hoàng Thắng 61

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewChạy URL http://localhost:1234/Movies/Edit?ID=3Nếu ID=3 tìm thấy trong database thì dữ liệu trả về trên giaodiện ở Views\Movies\Edit.cshtml với 1 phần đoạn mã hiển thị:

<div class="form-group">@Html.LabelFor(model => model.Title, new { @class ="control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Title)@Html.ValidationMessageFor(model => model.Title)</div> </div>

8. Tìm hiểu các phương thức Edit và Edit ViewChạy URL http://localhost:1234/Movies/Edit?ID=3Nếu ID=3 tìm thấy trong database thì dữ liệu trả về trên giaodiện ở Views\Movies\Edit.cshtml với 1 phần đoạn mã hiển thị:

<div class="form-group">@Html.LabelFor(model => model.Title, new { @class ="control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Title)@Html.ValidationMessageFor(model => model.Title)</div> </div>

Tạ Hoàng Thắng 62

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewChạy URL http://localhost:1234/Movies/Edit?ID=3 thì trên trìnhduyệt trả về 1 form với đoạn mã HTML:

<form action="/movies/Edit/4" method="post"><input name="__RequestVerificationToken"type="hidden" value="UxY6bkQyJCXO3Kn5AXg-6TXxOj6yVBi9tghHaQ5Lq_qwKvcojNXEEfcbn-FGh_0vuw4tS_BRk7QQQHlJp8AP4_X4orVNoQnp2cd8kXhykS01" /> <fieldset class="form-horizontal">…</form>

8. Tìm hiểu các phương thức Edit và Edit ViewChạy URL http://localhost:1234/Movies/Edit?ID=3 thì trên trìnhduyệt trả về 1 form với đoạn mã HTML:

<form action="/movies/Edit/4" method="post"><input name="__RequestVerificationToken"type="hidden" value="UxY6bkQyJCXO3Kn5AXg-6TXxOj6yVBi9tghHaQ5Lq_qwKvcojNXEEfcbn-FGh_0vuw4tS_BRk7QQQHlJp8AP4_X4orVNoQnp2cd8kXhykS01" /> <fieldset class="form-horizontal">…</form>

Tạ Hoàng Thắng 63

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewTrường hợp lỗi ngày, tháng, năm trên input đầu vào:

Tạ Hoàng Thắng 64

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewTrường hợp lỗi ngày, tháng, năm trên input đầu vào nên dùng góiGlobalize ở Manage NuGet Packages for Solution.

Tạ Hoàng Thắng 65

Ứng dụng MVC cơ bản8. Tìm hiểu các phương thức Edit và Edit ViewSau đó sửa code ở Views\Movies\Edit.cshtml

Tìm hiểu thêm ở:• http://www.asp.net/mvc/overview/getting-started/introduction/examining-the-edit-methods-and-edit-view

8. Tìm hiểu các phương thức Edit và Edit ViewSau đó sửa code ở Views\Movies\Edit.cshtml

Tìm hiểu thêm ở:• http://www.asp.net/mvc/overview/getting-started/introduction/examining-the-edit-methods-and-edit-view

Tạ Hoàng Thắng 66