熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET MVC 4框架揭秘:基於IoC的ControllerFactory(2)[1]

2013-11-13 12:31:13  來源: .NET編程 

    基於IoC的ControllerFactory(

  我們創建一個EmployeeRepository對象來進行數據的獲取並為它定義了對應的接口IEmployeeRepository如下面的代碼片段所示IEmployeeRepository僅僅具有一個返回Employee列表的唯一方法GetEmployees用於獲取指定ID的員工信息如果指定的ID為空則返回所有員工列表EmployeeRepository直接利用一個靜態字段模擬對數據的存儲

  public interface IEmployeeRepository

  {

  IEnumerable<Employee> GetEmployees(string id =

  }

  public class EmployeeRepository : IEmployeeRepository

  {

  private static IList<Employee> employees;

  static EmployeeRepository()

  {

  employees = new List<Employee>()

  employeesAdd(new Employee( 張三 new DateTime(

  銷售部))

  employeesAdd(new Employee( 李四 new DateTime(

  人事部))

  employeesAdd(new Employee( 王五 new DateTime(

  人事部))

  }

  public IEnumerable<Employee> GetEmployees(string id =

  {

  return employeesWhere(e => eId == id || stringIsNullOrEmpty(id))

  }

  }

  我們創建了一個具有如下定義的EmployeeController它具有一個類型為IEmployeeRepository的屬性Repository應用在上面的DependencyAttribute特性告訴我們這是一個依賴屬性當我們采用UnityContainer來激活EmployeeController對象的時候會根據注冊的類型映射來實例化一個實現了IEmployeeRepository的類型的實例來初始化該屬性

  public class EmployeeController : Controller

  {

  [Dependency]

  public IEmployeeRepository Repository { get; set; }

  public ActionResult GetAllEmployees()

  {

  var employees = thisRepositoryGetEmployees()

  return View(EmployeeList employees)

  }

  public ActionResult GetEmployeeById(string id)

  {

  Employee employee = thisRepositoryGetEmployees(id)FirstOrDefault()

  if (null == employee)

  {

  throw new HttpException( stringFormat(ID為{}的員工不存在 id))

  }

  return View(Employee employee)

  }

  }

  EmployeeController定義了兩個基本的Action方法GetAllEmployees通過Repository獲取所有員工列表並將其通過名位EmployeeList的View呈現出來另一個Action方法GetEmployeeById根據指定的ID獲取相應的員工信息最終用於呈現單個員工信息的View為Employee如果根據指定的ID找不到相應的員工直接拋出一個狀態為的HttpException異常

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/16071.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.