ASP.NET 3.5 - Bài 5: Chỉnh sửa dữ liệu với MVC

Table of Contents

1 Thêm mới dữ liệu trong MVC . 2

2 Sửa đô ̉ i dữ liê ̣ u trong MVC . 5

3 Xây dựng quy tri

̀

nh test trong ứng du ̣ ng ASP.NET MVC . 9

3.1 Tạo một controller để test. . 10

3.2 Test một view được trả về từ một controller. 14

3.3 Test một ViewData được trả về từ một controller . 15

3.4 Test một Result Action được trả về từ một controller . 16

4 Tài liệu tham khảo . 16

pdf16 trang | Chuyên mục: ASP.NET | Chia sẻ: dkS00TYs | Lượt xem: 3351 | Lượt tải: 4download
Tóm tắt nội dung ASP.NET 3.5 - Bài 5: Chỉnh sửa dữ liệu với MVC, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
tle"] = "Chi tiết sản phẩm"; 
 SanPham ctsp = data.LaySanPhamTuID(id); 
 return View("ChiTietSanPham", ctsp); 
 } 
 public ActionResult ThemMoiSanPham() 
 { 
 ViewData["Title"] = "Thêm mới sản phẩm"; 
 //List dulieu = data.LayCacLoaiSanPham(); 
 var loaiSanpham = from c in data.LoaiSanPhams select c; 
 ViewData["lsp"] = new SelectList(loaiSanpham, "Id", "TenLoaiSanPham"); 
 return View("ThemMoiSanPham", ViewData["lsp"]); 
 } 
 public ActionResult Create(string TenSanPham, float DonGia, int SoLuong, 
int loaiSanPham) 
 { 
 SanPham sp = new SanPham(); 
 sp.TenSanPham = TenSanPham; 
 sp.DonGia = DonGia; 
 sp.SoLuong = SoLuong; 
 sp.LoaiSanPham = loaiSanPham; 
 data.ThemMoiSanPham(sp); 
 data.SubmitChanges(); 
 return RedirectToAction("DanhMucLoaiSanPham"); 
 } 
 public ActionResult CapNhatSanPham(int id) 
 { 
 ViewData["Title"] = "Cập nhất sản phẩm"; 
 var spToEdit = (from sp in data.SanPhams 
 where sp.Id = id 
 select sp).First(); 
 ViewData.Model = spToEdit; 
 return View(); 
 } 
 public ActionResult Update() 
 { 
 return RedirectToAction("DanhMucLoaiSanPham"); 
 } 
 } 
} 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 8 
Trong lớp Controllers \SanPhamController.cs đăṭ con trỏ chuôṭ bên caṇh phương thức 
CapNhatSanPham, click phải chuôṭ choṇ Add View (figure 4) 
Figure 4. Thêm mới view cho phương thức CapNhatSanPham 
Thiết lâp̣ các thuôc̣ tính sau: Đánh dấu choṇ vào checkbox “Created a strongly typed view”, chọn thuộc 
tính của View content là Edit, chọn thuộc tính của View data class là BanHang.Models.SanPham rồi ấn 
nút Add để thêm vào Views\SanPham\CapNhatSanPham.aspx (Figure 5) 
Figure 5. Tạo view CapNhatSanPham từ controller CapNhatSanPham 
Sau khi taọ xong ta se ̃có môṭ Views\SanPham\CapNhatSanPham.aspx như sau: 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 9 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage" %> 
 CapNhatSanPham 
 Fields 
 Id: 
 TenSanPham: 
 DonGia: 
 SoLuong: 
 LoaiSanPham: 
3 Xây dự ng quy triǹh test trong ứng dụ ng ASP.NET MVC 
Có 3 kiểu unit test trong ứng dụng ASP.NET MVC dùng để test các controllers được xây dựng: test 
view được trả về từ controller action, test dữ liệu trả về từ một controller action, test một controller 
action được redirect tới một tới một controller action khác. 
Mặc định khi tạo ứng dụng với ASP.NET MVC đã mặc định xây dựng sẵn một project test (Figure 6). 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 10 
Figure 6. Ứng dụng test được tạo 
3.1 Tạo một controller để test. 
Xét lớp Controllers\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() 
 { 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 11 
 // Code cua ban o day 
 ViewData["Title"] = "Danh muc̣ loaị san̉ phâm̉"; 
 List lsp = data.LoaiSanPhams.ToList(); 
 return View("DanhMucLoaiSanPham", lsp); 
 } 
 public ActionResult DanhSachSanPham(int id) 
 { 
 ViewData["Title"] = "Danh saćh san̉ phâm̉ trong loaị san̉ phâm̉"; 
 List sp = data.LaySanPhamTuLoaiSanPham(id); 
 return View("DanhSachSanPham", sp); 
 //DuLieuDanhSachSanPham sp = new DuLieuDanhSachSanPham(); 
 //ViewData.TenLoaiSanPham = loaisanpham; 
 //ViewData.SanPham = data.LaySanPhamTuLoaiSanPham(loaisanpham); 
 //return View("DanhSachSanPham", ViewData); 
 } 
 public ActionResult ChiTietSanPham(int id) 
 { 
 ViewData["Title"] = "Chi tiêt́ san̉ phâm̉"; 
 SanPham ctsp = data.LaySanPhamTuID(id); 
 return View("ChiTietSanPham", ctsp); 
 } 
 public ActionResult ThemMoiSanPham() 
 { 
 ViewData["Title"] = "Thêm mới sản phẩm"; 
 //List dulieu = data.LayCacLoaiSanPham(); 
 var loaiSanpham = from c in data.LoaiSanPhams select c; 
 ViewData["lsp"] = new SelectList(loaiSanpham, "Id", "TenLoaiSanPham"); 
 return View("ThemMoiSanPham", ViewData["lsp"]); 
 } 
 public ActionResult Create(string TenSanPham, float DonGia, int SoLuong, 
int loaiSanPham) 
 { 
 SanPham sp = new SanPham(); 
 sp.TenSanPham = TenSanPham; 
 sp.DonGia = DonGia; 
 sp.SoLuong = SoLuong; 
 sp.LoaiSanPham = loaiSanPham; 
 data.ThemMoiSanPham(sp); 
 data.SubmitChanges(); 
 return RedirectToAction("DanhMucLoaiSanPham"); 
 } 
 public ActionResult CapNhatSanPham(int id) 
 { 
 ViewData["Title"] = "Câp̣ nhât́ san̉ phâm̉"; 
 var spToEdit = (from sp in data.SanPhams 
 where sp.Id == id 
 select sp).First(); 
 ViewData.Model = spToEdit; 
 return View(); 
 } 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 12 
 [AcceptVerbs(HttpVerbs.Post)] 
 public ActionResult Update() 
 { 
 //UpdateModel(sp,FormCollection.KeysCollection); 
 return RedirectToAction("DanhMucLoaiSanPham"); 
 } 
 } 
} 
Xây dựng một lớp test cho Controllers\SanPhamController.cs ở trên, tạo SanPhamControllerTest.cs từ 
folder Controllers của projects chọn Add  Unit Test (figure 7) 
Figure 7. Xây dựng test cho controller 
Đánh dấu vào phương thức cần được test (figure 8) 
Figure 8. Check chọn phương thức cần test 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 13 
BanHang.Tests\Controllers\SanPhamControllerTest.cs 
using BanHang.Controllers; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using Microsoft.VisualStudio.TestTools.UnitTesting.Web; 
using System.Web.Mvc; 
namespace BanHang.Tests 
{ 
 /// 
 ///This is a test class for SanPhamControllerTest and is intended 
 ///to contain all SanPhamControllerTest Unit Tests 
 /// 
 [TestClass()] 
 public class SanPhamControllerTest 
 { 
 private TestContext testContextInstance; 
 /// 
 ///Gets or sets the test context which provides 
 ///information about and functionality for the current test run. 
 /// 
 public TestContext TestContext 
 { 
 get 
 { 
 return testContextInstance; 
 } 
 set 
 { 
 testContextInstance = value; 
 } 
 } 
 #region Additional test attributes 
 // 
 //You can use the following additional attributes as you write your tests: 
 // 
 //Use ClassInitialize to run code before running the first test in the 
class 
 //[ClassInitialize()] 
 //public static void MyClassInitialize(TestContext testContext) 
 //{ 
 //} 
 // 
 //Use ClassCleanup to run code after all tests in a class have run 
 //[ClassCleanup()] 
 //public static void MyClassCleanup() 
 //{ 
 //} 
 // 
 //Use TestInitialize to run code before running each test 
 //[TestInitialize()] 
 //public void MyTestInitialize() 
 //{ 
 //} 
 // 
 //Use TestCleanup to run code after each test has run 
 //[TestCleanup()] 
 //public void MyTestCleanup() 
 //{ 
 //} 
 // 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 14 
 #endregion 
 /// 
 ///A test for ChiTietSanPham 
 /// 
 [TestMethod()] 
 [HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang", 
"/")] 
 [UrlToTest("")] 
 public void ChiTietSanPhamTest() 
 { 
 SanPhamController target = new SanPhamController(); // TODO: Initialize 
to an appropriate value 
 int id = 0; // TODO: Initialize to an appropriate value 
 ActionResult expected = null; // TODO: Initialize to an appropriate 
value 
 ActionResult actual; 
 actual = target.ChiTietSanPham(id); 
 Assert.AreEqual(expected, actual); 
 Assert.Inconclusive("Verify the correctness of this test method."); 
 } 
 } 
} 
3.2 Test một view được trả về từ một controller. 
Kiểm tra xem view được trả về có đúng không và khi nào thì nó được gọi đến, phương thức nào của 
view được trả về. 
BanHang.Tests\Controllers\SanPhamControllerTest.cs 
[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang", 
"/")] 
[UrlToTest("")] 
public void DetailViewTest() 
{ 
 SanPhamController sp = new SanPhamController(); 
 var result = sp.ChiTietSanPham(8) as ViewResult; 
 Assert.AreEqual("ChiTietSanPham", result.ViewName); 
} 
Bắt đầu thực hiện công việc test (figure 9). Lựa chọn một phương thức test  Run Selection 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 15 
Figure 9. Thực hiện các phương thức test 
Kết quả thực hiện test (figure 10) 
Figure 10. Kết quả thực hiện test DetailViewTest 
3.3 Test một ViewData được trả về từ một controller 
BanHang.Tests\Controllers\SanPhamControllerTest.cs 
[TestMethod] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang", 
"/")] 
[UrlToTest("")] 
public void TestViewData() 
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 16 
{ 
 // 
 // TODO: Add test logic here 
 // 
 var controller = new BanHang.Controllers.SanPhamController(); 
 var result = controller.ChiTietSanPham(8) as ViewResult; 
 var sp = (SanPham)result.ViewData.Model; 
 Assert.AreEqual("Yamaha", sp.TenSanPham); 
} 
3.4 Test một Result Action được trả về từ một controller 
BanHang.Tests\Controllers\SanPhamControllerTest.cs 
[TestMethod] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang", 
"/")] 
[UrlToTest("")] 
public void TestResultAction() 
{ 
 // 
 // TODO: Add test logic here 
 // 
 var controller = new BanHang.Controllers.SanPhamController(); 
 var result = (RedirectToRouteResult)controller.ChiTietSanPham(-1); 
 Assert.AreEqual("Index", result.Values["action"]); 
} 
4 Tài liệu tham khảo 
scenarios.aspx 

File đính kèm:

  • pdfASP.NET 3.5 - Bài 5_Chỉnh sửa dữ liệu với MVC.pdf
Tài liệu liên quan