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

Hướng dẫn lập trình asp.net 3.5 microsoft - bài 5: content mvc asp.net potx

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 (1.06 MB, 16 trang )

 5


Table of Contents
1 Thêm mới dữ liệu trong MVC 2
2 S

 

 5
3 Xây d



.NET MVC 9
3.1  10
3.2  14
3.3  15
3.4  16
4  16



Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC
2


1 Thêm mới dữ liệu trong MVC


Figure 1. Sửa đổi controller SanPhamController.cs







\DataClasses.















.
Models\DataClasses.cs
using System;
using System.Collections.Generic;
using System.Linq;

namespace BanHang.Models
{
partial class DataClassesDataContext

{
public List<LoaiSanPham> LayCacLoaiSanPham()
{
return LoaiSanPhams.ToList();
}

public List<SanPham> LaySanPhamTuLoaiSanPham(int id)
{
return SanPhams.Where(l => l.LoaiSanPham == id).ToList();
}

Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC
3

public SanPham LaySanPhamTuID(int id)
{
return SanPhams.Single(s => s.Id == id);
}

public void ThemMoiSanPham(SanPham sp)
{
SanPhams.InsertOnSubmit(sp);
}
}
}
 ThemMoiSanPham và











.
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(int id)
{
ViewData["Title"] = "Danh sách sản phẩm trong loại sản phẩm";

List<SanPham> sp = data.LaySanPhamTuLoaiSanPham(id);

return View("DanhSachSanPham", sp);

//DuLieuDanhSachSanPham sp = new DuLieuDanhSachSanPham();
//ViewData.TenLoaiSanPham = loaisanpham;
//ViewData.SanPham = data.LaySanPhamTuLoaiSanPham(loaisanpham);

//return View("DanhSachSanPham", ViewData);
}


Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC
4

public ActionResult ChiTietSanPham(int id)

{
ViewData["Title"] = "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<LoaiSanPham> 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");

}

}
}
.
Views\SanPham\ThemMoiSanPham.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
AutoEventWireup="true" CodeBehind="ThemMoiSanPham.aspx.cs"
Inherits="BanHang.Views.SanPham.ThemMoiSanPham" %>
<asp:Content ID="viewThemMoiSanPham" ContentPlaceHolderID="MainContent"
runat="server">
<form action="Create" method="post">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Tên sn phm:</td>
<td><input type="text" id="TenSanPham" name="TenSanPham" /></td>
</tr>
<tr>
<td>Đơn giá:</td>
<td><input type="text" id="DonGia" name="DonGia" /></td>
</tr>
<tr>
<td>Số lượng:</td>
<td><input type="text" id="SoLuong" name="SoLuong" /></td>
</tr>
<tr>
<td>Loại sn phm:</td>
<td>
<% <input type="text" id="LoaiSanPham" name="LoaiSanPham" />
%>

<%=
Html.DropDownList("loaiSanPham",(SelectList)ViewData["lsp"]) %>
</td>
</tr>
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC
5

<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Thêm mới sn phm"
/></td>
</tr>
</table>
</form>
</asp:Content>






(figure 2)

Figure 2. Thư
̣
c hiê
̣
n thêm mơ

́
i sa
̉
n phâ
̉
m trong MVC
2 
































Views\SanPham\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>
<p>
<ul>
<% foreach (var sp in ViewData.Model)
{ %>
<li>
<%= Html.ActionLink(sp.TenSanPham , "ChiTietSanPham/" + sp.Id,
"SanPham") %>
(<%= Html.ActionLink("Edit" , "CapNhatSanPham/" + sp.Id, "SanPham")
%>)
</li>
<% } %>
</ul>
</p>
<p>
<form action=" /ThemMoiSanPham" method="post">

<input type="submit" value="Thêm mới một sn phm" />
</form>
</p>
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC
6

</asp:Content>














































. (figure 3)

Figure 3. Danh sa
́
ch sa
̉
n phâ
̉

m đa
̃
đươ
̣
c thay đô
̉
i.
Thêm 2 





\SanPhamController.cs
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()
{
// 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);
}

Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC
7

public ActionResult DanhSachSanPham(int id)
{
ViewData["Title"] = "Danh sách sản phẩm trong loại sản phẩm";

List<SanPham> 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 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<LoaiSanPham> 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




 \SanPhamController.










CapNhatSanPham, 





(figure 4)

Figure 4. Thêm mơ
́
i view cho phương thư
́
c CapNhatSanPham









: 





Created a strongly typed view, 
View content Edit, View data class BanHang.Models.SanPham 
\SanPham\CapNhatSanPham.aspx (Figure 5)

Figure 5. To view CapNhatSanPham tư
̀
controller CapNhatSanPham








\SanPham\
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<BanHang.Models.SanPham>" %>


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

<h2>CapNhatSanPham</h2>

<%= Html.ValidationSummary() %>

<% using (Html.BeginForm()) {%>

<fieldset>
<legend>Fields</legend>
<p>
<label for="Id">Id:</label>
<%= Html.TextBox("Id") %>
<%= Html.ValidationMessage("Id", "*") %>
</p>
<p>
<label for="TenSanPham">TenSanPham:</label>
<%= Html.TextBox("TenSanPham") %>
<%= Html.ValidationMessage("TenSanPham", "*") %>
</p>
<p>
<label for="DonGia">DonGia:</label>
<%= Html.TextBox("DonGia") %>
<%= Html.ValidationMessage("DonGia", "*") %>
</p>
<p>
<label for="SoLuong">SoLuong:</label>
<%= Html.TextBox("SoLuong") %>
<%= Html.ValidationMessage("SoLuong", "*") %>

</p>
<p>
<label for="LoaiSanPham">LoaiSanPham:</label>
<%= Html.TextBox("LoaiSanPham") %>
<%= Html.ValidationMessage("LoaiSanPham", "*") %>
</p>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>

<% } %>

<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>

</asp:Content>

3 







.NET MVC
 
 


 
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 test.
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 mục loại sản phẩm";

List<LoaiSanPham> lsp = data.LoaiSanPhams.ToList();

return View("DanhMucLoaiSanPham", lsp);
}

public ActionResult DanhSachSanPham(int id)
{
ViewData["Title"] = "Danh sách sản phẩm trong loại sản phẩm";

List<SanPham> 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 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<LoaiSanPham> 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();
}

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");
}

}
}
\S trên, o SanPhamControllerTest.cs 
 Unit Test (figure 7)

Figure 7. Xây dựng test cho controller



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
{


/// <summary>
///This is a test class for SanPhamControllerTest and is intended
///to contain all SanPhamControllerTest Unit Tests
///</summary>
[TestClass()]
public class SanPhamControllerTest
{


private TestContext testContextInstance;

/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>

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


/// <summary>
///A test for ChiTietSanPham
///</summary>
[TestMethod()]
[HostType("ASP.NET")]

[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]
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c tr v t mt controller.

.
BanHang.Tests\Controllers\SanPhamControllerTest.cs

[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]
public void DetailViewTest()
{
SanPhamController sp = new SanPhamController();
var result = sp.ChiTietSanPham(8) as ViewResult;
Assert.AreEqual("ChiTietSanPham", result.ViewName);
}

.  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


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("http://localhost:2430/")]

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c tr v t mt controller
BanHang.Tests\Controllers\SanPhamControllerTest.cs
[TestMethod]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]

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 

/>scenarios.aspx


×