Cài đặt và sử dụng Unity.Mvc3 cho ASP.NET MVC 4

Hôm nay Góc Kinh Nghiệm sẽ giới thiệu về cách cài đặt và hướng dẫn sử dụng Unity.Mvc3 cho ASP.NET MVC 4. Trước khi cài đặt và sử dụng Unity, Góc Kinh Nghiệm sẽ giới thiệu sơ Unity.Mvc3 là gì.

Unity.Mvc3 là một thư viện cho phép dễ dàng và đơn giản để tương tác Unity IoC container của Microsoft và ASP.NET MVC 3 cũng như ASP.NET MVC 4. Các bạn có thể tự tìm hiểu thêm Unity IoC container là gì.

Cài đặt

Bạn có thể chọn một trong các cách sau để cài đặt

  • Cách 1: Mở Visual Studio 2010 -> Tools -> Library Package Manager -> Package Manager Console, gõ vào dòng lệnh bên dưới:
PM> install-package unity.mvc3
  • Cách 2: Giả sử bạn đã cài NuGet, mở Visual Stuido 2010 -> Tools -> Library Package Manager -> Manage NuGet Packages -> chọn tab Online bên trái -> gõ từ khóa Unity.Mvc3 vào ô Search Online bên phải -> danh sách kết quả tìm kiếm ở chính giữa, bạn sẽ chọn Unity.Mvc3 và nhấn nút “Install” để cài đặt.
  • Cách 3: Bạn có thể download tập tin Unity.Mvc3.dll tại http://unitymvc3.codeplex.com/releases/view/87923, sau đó Add Reference bằng tay. Nếu bạn sử dụng cách này thì tham khảo document.

Sau khi cài đặt thành công, tập tin Bootstrapper.cs được tự động thêm vào project của chúng ta. Nếu bạn sử dụng cách 1 và 2, bạu sẽ thấy 2 dòng bên dưới trong tập tin packages.config

  <package id="Unity" version="2.1.505.0" />
  <package id="Unity.Mvc3" version="1.2" />

Hướng dẫn dử dụng

Tạo project ASP.NET MVC 4 có tên Mvc4Unity, lần lượt làm theo các bước sau:

  • Bước 1: Tạo thư mục Services trong poject Mvc4Unity
  • Bước 2: Tạo lần lược 2 tập tin IValueService.csValueService.cs trong thư mục Services vừa tạo ở bước 1, trong đó IValueService  là interface con ValueService là implementation của interface, code như bên dưới

IValueService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mvc4Unity.Services
{
    public interface IValueService
    {
        int Create(string value);
        string Update(int id, string value);
        void Delete(int id);
        IDictionary<int, string> GetAll();
        string Get(int id);
    }
}

ValueService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mvc4Unity.Services
{
    public class ValueService : IValueService
    {
        private IDictionary<int, string> _values;

        public ValueService()
        {
            _values = new Dictionary<int, string>{
                {1, "value 1"},
                {2, "value 2"},
                {3, "value 3"},
                {4, "value 4"},
                {5, "value 5"}
            };
        }

        private int GetNextId()
        {
            return _values.Keys.Max() + 1;
        }

        public int Create(string value)
        {
            int id = GetNextId();
            _values.Add(id, value);
            return id;
        }

        public string Get(int id)
        {
            return _values[id];
        }

        public string Update(int id, string value)
        {
            _values[id] = value;
            return Get(id);
        }

        public void Delete(int id)
        {
            _values.Remove(id);
        }

        public IDictionary<int, string> GetAll()
        {
            return _values;
        }
    }
}
  • Bước 3: Thêm vào hàm BuildUnityContainer() trong tập tin Bootstrapper.cs dòng code sau:
container.RegisterType<IValueService, ValueService>();

code hoàn chỉnh của hàm BuildUnityContainer

        private static IUnityContainer BuildUnityContainer()
        {
            var container = new UnityContainer();

            container.RegisterType<IValueService, ValueService>();
            return container;
        }
  • Bước 4: Tạo một controller có tên UintyDemo với code như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Mvc4Unity.Services;

namespace Mvc4Unity.Controllers
{
    public class UnityDemoController : Controller
    {
        //
        // GET: /UnityDemo/
        private readonly IValueService _valueService;

        public UnityDemoController(IValueService valueService)
        {
            _valueService = valueService;
        }

        public ActionResult Index()
        {
            var model = _valueService.GetAll();
            return View(model);
        }

    }
}
  • Bước 5: Tạo view cho action Index của controller UnityDemo ở bước 4 trên. Nhấn chuột phải vào Index -> chọn Add View, và code của tập tin Index.cshtml như sau:
@model IDictionary<int, string>
@{
    ViewBag.Title = "Unity Demo";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    Unity Demo</h2>
<ul>
    @foreach (var item in Model)
    { 
        <li>ID: @item.Key, Value: @item.Value</li>
    }
</ul>
  • Bước 6: Giờ bạn build chương trình và chạy bằng cách mở trình duyệt bất kỳ, gõ URL:
http://localhost:[your port number]/UnityDemo

Bạn sẽ nhận được một danh sách 5 item từ 1 đến 5 gồm ID và Value.

Rất dễ thực hành và dễ hiểu!


4 comments

Leave a Reply

Your email address will not be published. Required fields are marked *