Hướng dẫn từng bước tạo ứng dụng Web Shop Music Store bằng ASP.NET MVC3
Tổng quan
MVC Music Store là một ứng dụng hướng dẫn, giới thiệu và giải thích bước theo các bước làm thế
nào để sử dụng ASP.NET MVC và Visual Web Developer để phát triển web. Chúng tôi sẽ bắt đầu từ từ,
như vậy mới bắt đầu cấp độ kinh nghiệm phát triển web là okay.
Ứng dụng chúng ta sẽ xây dựng một cửa hàng âm nhạc đơn giản. Có ba phần chính ứng dụng: mua
sắm, thanh toán và quản trị.
ngăn chặn các hành động điều khiển được thực hiện bằng cách duyệt / Store / GenreMenu. Này không cần thiết cho các quan điểm một phần, nhưng nó là một thực hành tốt, kể từ khi chúng tôi muốn chắc chắn rằng hành động của chúng ta điều khiển được sử dụng như chúng tôi dự định. Chúng tôi cũng đang quay trở lại PartialView hơn là View, cho phép các công cụ xem biết rằng nó không nên sử dụng Giao diện cho quan điểm này, khi nó đang được bao gồm trong các quan điểm khác. Nhấp chuột phải vào hành động điều khiển GenreMenu và tạo ra một cái nhìn một phần GenreMenu tên được mạnh mẽ đánh máy bằng cách sử dụng xem loại dữ liệu lớp như hình dưới đây. Edit by Nhiên IT ( www.eg.vnao.vn ) Cập nhật mã xem cho xem GenreMenu một phần để hiển thị các mục bằng cách sử dụng một danh sách có thứ tự như sau. @model IEnumerable @foreach (var genre in Model) { @Html.ActionLink(genre.Name, "Browse", "Store", new { Genre = genre.Name }, null) } Đang cập nhật Giao diện trang web để hiển thị Xem một phần của chúng tôi Chúng tôi có thể thêm quan điểm một phần của chúng tôi để bố trí trang web (/ xem / chia sẻ / _Layout.cshtml) gọi Html.RenderAction (). Chúng tôi sẽ thêm cả hai, cũng như đánh dấu một số bổ sung để hiển thị chúng, như hình dưới đây: @ViewBag.Title <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"> ASP.NET MVC MUSIC STORE Home Store @{Html.RenderAction("CartSummary", "ShoppingCart");} Admin @{Html.RenderAction("GenreMenu", "Store");} @RenderBody() built with ASP.NET MVC 3 Edit by Nhiên IT ( www.eg.vnao.vn ) Bây giờ khi chúng ta chạy ứng dụng, chúng ta sẽ thấy Genre trong vùng điều hướng bên trái Tóm tắt thông tin giỏ hàng ở đầu trang. Cập nhật trang Browse cửa hàng Trang Browse Store là chức năng, nhưng không nhìn rất tốt. Chúng ta có thể cập nhật các trang để hiển thị các album trong một bố cục tốt đẹp hơn bằng cách cập nhật mã xem (tìm thấy / Views / Store / Browse.cshtml) như sau: @model MvcMusicStore.Models.Genre @{ ViewBag.Title = "Browse Albums"; } @Model.Name Albums @foreach (var album in Model.Albums) { <a href="@Url.Action("Details", new { id = album.AlbumId })"> <img alt="@album.Title" src="@album.AlbumArtUrl" /> @album.Title } Ở đây chúng tôi đang làm việc sử dụng của Url.Action hơn là Html.ActionLink để chúng tôi có thể áp dụng định dạng đặc biệt để liên kết để bao gồm các album ảnh nghệ thuật. Lưu ý: Chúng tôi đang hiển thị bìa album chung cho các album này. Thông tin này được lưu trữ trong cơ sở dữ liệu và có thể chỉnh sửa thông qua các Store Manager. Bạn được chào đón để thêm tác phẩm nghệ thuật của riêng bạn. Bây giờ khi chúng tôi duyệt đến một loại, chúng ta sẽ thấy các album được hiển thị trong một mạng lưới với các tác phẩm nghệ thuật album. Edit by Nhiên IT ( www.eg.vnao.vn ) Cập nhật trang Home để hiển thị các album bán chạy hàng đầu Chúng tôi muốn để tính năng album bán chạy hàng đầu của chúng tôi vào trang chủ để tăng doanh số bán hàng.Chúng tôi sẽ làm cho một số cập nhật HomeController của chúng tôi để xử lý đó, và thêm một số đồ họa bổ sung như. Đầu tiên, chúng ta sẽ thêm một tài sản chuyển hướng đến lớp Album của chúng tôi để EntityFramework đó biết rằng họ đang liên kết. Vài dòng cuối cùng của chúng tôi Album lớp nên bây giờ trông như thế này: public virtual Genre Genre { get; set; } public virtual Artist Artist { get; set; } public virtual ListOrderDetails { get; set; } } } Lưu ý: Điều này sẽ yêu cầu thêm một tuyên bố bằng cách sử dụng để mang lại trong không gian tên System. Đầu tiên, chúng ta sẽ thêm một trường storeDB các MvcMusicStore.Models cách sử dụng câu, như trong các bộ điều khiển khác của chúng tôi. Tiếp theo, chúng ta sẽ thêm các phương pháp sau đây để Edit by Nhiên IT ( www.eg.vnao.vn ) HomeController truy vấn cơ sở dữ liệu của chúng tôi để tìm các album bán chạy nhất theo OrderDetails. . private List GetTopSellingAlbums(int count) { // Group the order details by album and return // the albums with the highest count return storeDB.Albums .OrderByDescending(a => a.OrderDetails.Count()) .Take(count) .ToList(); } This is a private method, since we don’t want to make it available as a controller action. We are including it in the HomeController for simplicity, but you are encouraged to move your business logic into separate service classes as appropriate. With that in place, we can update the Index controller action to query the top 5 selling albums and return them to the view. public ActionResult Index() { // Get most popular albums var albums = GetTopSellingAlbums(5); return View(albums); } Đây là một phương pháp riêng, vì chúng ta không muốn để làm cho nó có sẵn như là một hành động điều khiển.Chúng tôi bao gồm cả nó trong HomeController vì đơn giản, nhưng bạn được khuyến khích để di chuyển logic kinh doanh của bạn vào các lớp học dịch vụ riêng biệt cho phù hợp. Với tại chỗ, chúng tôi có thể cập nhật các Chỉ số hành động điều khiển để truy vấn 5 album bán chạy nhất và trả lại để xem. public ActionResult Index() { // Get most popular albums var albums = GetTopSellingAlbums(5); return View(albums); } Đoạn code hoàn chỉnh cho HomeController cập nhật như hình dưới đây. using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using MvcMusicStore.Models; Edit by Nhiên IT ( www.eg.vnao.vn ) namespace MvcMusicStore.Controllers { public class HomeController : Controller { // // GET: /Home/ MusicStoreEntities storeDB = new MusicStoreEntities(); public ActionResult Index() { // Get most popular albums var albums = GetTopSellingAlbums(5); return View(albums); } private List GetTopSellingAlbums(int count) { // Group the order details by album and return // the albums with the highest count return storeDB.Albums .OrderByDescending(a => a.OrderDetails.Count()) .Take(count) .ToList(); } } } Cuối cùng, chúng tôi sẽ cần phải cập nhật xem Index Trang chủ của chúng tôi để nó có thể hiển thị một danh sách các album bằng cách cập nhật các loại mẫu và thêm danh sách album để phía dưới. Chúng tôi sẽ nhân cơ hội này cũng thêm một tiêu đề và một phần xúc tiến trang. @model List @{ ViewBag.Title = "ASP.NET MVC Music Store"; } Fresh off the grill @foreach (var album in Model) { <a href="@Url.Action("Details", "Store", new { id = album.AlbumId })"> @album.Title } Bây giờ khi chúng ta chạy các ứng dụng, chúng tôi sẽ cập nhật trang chủ của chúng tôi với các album bán chạy nhất và thông điệp quảng cáo của chúng tôi. Edit by Nhiên IT ( www.eg.vnao.vn ) Kết luận Chúng ta đã thấy rằng ASP.NET MVC làm cho nó dễ dàng để tạo một trang web phức tạp với truy cập cơ sở dữ liệu, hội viên, AJAX, vv khá nhanh chóng. Hy vọng rằng hướng dẫn này đã cho bạn những công cụ bạn cần để bắt đầu xây dựng các ứng dụng ASP.NET MVC của riêng của bạn! DEMO PHẦN TÌM KIẾM AJAX Nếu các bạn muốn tạo chức năng tìm kiếm tương tự như google, nhập keyword đến đâu thì tự động search kết quả đến đó mà ko cần phải refresh lại trang thì có thể sử dụng jQuery. Trong homecontroller tôi tạo thêm 2 action : public ActionResult Search() { return View(); } Edit by Nhiên IT ( www.eg.vnao.vn ) public ActionResult SearchResult(string s) { var albums = storeDB.Albums.Where(a => a.Title.Contains(s)); return PartialView(albums); } Tạo các 2 view tương ứng với 2 Action trên là Search.aspx và SearchResult.ascx, lưu ý với view SearchResult.aspx thì nhớ chọn cả mục Create a partial view(.ascx). Ở view Search thì chỉ có 1 html input và 1 button submit, kết quả nhận được sẽ display ở partialview SearchResult. Source của Search.aspx như sau : <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> function onSuggestion() { $('#keyword').keyup(function () { $('#key').val($('#keyword').val()); $.get('/home/SearchResult', { s: $('#keyword').val() }, function (data) { $('#result').html(data); }); } ); } Search <% using(Ajax.BeginForm("SearchResult","Home",new AjaxOptions { InsertionMode=InsertionMode.Replace, HttpMethod="GET", UpdateTargetId="result" })){%> Lưu ý ở hàm JS mà tôi sử dụng jQuery, Mỗi khi bắt sự kiện keyup của cái textbox thì tôi gửi 1 HTTP get request về server : Edit by Nhiên IT ( www.eg.vnao.vn ) function onSuggestion() { $('#keyword').keyup(function () { $('#key').val($('#keyword').val()); $.get('/home/SearchResult',{s:$('#keyword').val()}, function (data) { $('#result').html(data); }); } ); } Cái SearchResult chỉ đơn giản là show ra kết quả, và đc render mỗi khi submit ở view Search : " %> AlbumId GenreId ArtistId Title Price AlbumArtUrl | | Edit by Nhiên IT ( www.eg.vnao.vn ) Lưu ý là ở Site.Master các bạn phải báo mấy cái script cần thiết : <script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"> <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"> <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"> Code Site.master <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="MVC_MusicStore_Egroups.Views.Shared.Site" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> Search Ajax Edit by Nhiên IT ( www.eg.vnao.vn ) DEMO MVC3 MUSIC STORE - EGROUPS Home Store Admin Xây dựng bởi E-Groups Việt Nam kết quả các bạn sẽ đc như sau : Edit by Nhiên IT ( www.eg.vnao.vn ) Xong, chúc bạn thành công !
File đính kèm:
- Hướng dẫn từng bước tạo ứng dụng Web Shop Music Store bằng ASP.NET MVC3.pdf