您现在的位置是:首页 >

aspnet网站开发实例 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[1]

火烧 2022-12-21 03:09:28 1036
ASP.NET MVC 4框架揭秘:基于IoC的Co trollerFactory(2)[1]    基于IoC的Co trollerFactory( )  我们创建一个Em loyeeRe o it

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

     基于IoC的ControllerFactory( )

  我们创建一个EmployeeRepository对象来进行数据的获取 并为它定义了对应的接口IEmployeeRepository 如下面的代码片段所示 IEmployeeRepository仅仅具有一个返回Employee列表的唯一方法GetEmployees 用于获取指定ID的员工信息 如果指定的ID为空 则返回所有员工列表 EmployeeRepository直接利用一个静态字段模拟对数据的存储

aspnet网站开发实例 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[1]

  public interface IEmployeeRepository

  {

  IEnumerable<Employee> GetEmployees(string id = )

  }

  public class EmployeeRepository : IEmployeeRepository

  {

  private static IList<Employee> employees;

  static EmployeeRepository()

  {

  employees = new List<Employee>()

  employees Add(new Employee( 张三 男 new DateTime( )

   销售部 ))

  employees Add(new Employee( 李四 女 new DateTime( )

   人事部 ))

  employees Add(new Employee( 王五 男 new DateTime( )

   人事部 ))

  }

  public IEnumerable<Employee> GetEmployees(string id = )

  {

  return employees Where(e => e Id == id || string IsNullOrEmpty(id))

  }

  }

  我们创建了一个具有如下定义的EmployeeController 它具有一个类型为IEmployeeRepository的属性Repository 应用在上面的DependencyAttribute特性告诉我们这是一个 依赖属性 当我们采用UnityContainer来激活EmployeeController对象的时候 会根据注册的类型映射来实例化一个实现了IEmployeeRepository的类型的实例来初始化该属性

  public class EmployeeController : Controller

  {

  [Dependency]

  public IEmployeeRepository Repository { get; set; }

  public ActionResult GetAllEmployees()

  {

  var employees = this Repository GetEmployees()

  return View( EmployeeList employees)

  }

  public ActionResult GetEmployeeById(string id)

  {

  Employee employee = this Repository GetEmployees(id) FirstOrDefault()

  if (null == employee)

  {

  throw new HttpException( string Format( ID为{ }的员工不存在 id))

  }

  return View( Employee employee)

  }

  }

  EmployeeController定义了两个基本的Action方法 GetAllEmployees通过Repository获取所有员工列表并将其通过名位EmployeeList的View呈现出来 另一个Action方法GetEmployeeById根据指定的ID获取相应的员工信息 最终用于呈现单个员工信息的View为Employee 如果根据指定的ID找不到相应的员工 直接抛出一个状态为 的HttpException异常

lishixinzhi/Article/program/net/201311/16071  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码