ASP.net N层体系结构表示层

时间:2018-11-04 12:06:30

标签: c# asp.net-mvc

遇到一个我不知道表示层如何使用服务层的问题。 我总共有三层:数据层,服务层和表示层。

在数据层中,我使用了Ado.net并创建了存储库。

在服务层中,我创建了Dto实体。 当我从Controller呼叫服务时遇到问题。

错误是:

  

没有为此对象定义无参数构造函数。   说明:执行当前Web请求时出现未处理的异常。查看堆栈跟踪以查看有关此错误的更多信息,并确定导致代码错误的位置。   异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

源错误:

  

运行当前Web请求时生成了未处理的异常。可以使用异常堆栈查看有关异常的来源和位置的信息。   
下面是我的代码:

        using AutoMapper;
        using OA.Models;
        using OA.Service;
        using OA.Service.DAL;
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.Mvc;

        namespace OA.Controllers
        {
          public class HomeController : Controller
           {
              private readonly IUserService userService;
              private readonly IUserProfileService userProfileService;

          public HomeController(IUserService userService, IUserProfileService userProfileService)
          {
           this.userService = userService;
           this.userProfileService = userProfileService;
           }
    // GET: Home
    [HttpGet]
    public ActionResult Index()
    {
        List<UserViewModel> model = new List<UserViewModel>();
        userService.GetUsers().ToList().ForEach(u =>
        {
            UserProfileDto userProfileDto = userProfileService.GetUserProfile(u.Id);
            UserViewModel user = new UserViewModel
            {
                Id = u.Id,
                Name = $"{userProfileDto.FirstName} {userProfileDto.LastName}",
                Email = u.Email,
                Address = userProfileDto.Address
            };
            model.Add(user);
        });

        return View(model);
    }

  }
}

有人知道这是什么问题吗?还是我误会了如何使用N层架构?谢谢

1 个答案:

答案 0 :(得分:0)

您必须在IOC中注册HomeController

以Unity为例:

public static void RegisterTypes(IUnityContainer container)
{
    container.RegisterType<Controllers.HomeController>(new InjectionConstructor());
}