ASP.NET MVC 4从另一个控制器调用控制器方法

本文关键字:控制器 调用 方法 另一个 NET MVC ASP | 更新日期: 2023-09-27 18:10:22

我在这个问题上卡住了。我有两个控制器,UsersController和HomeController我试图从UsersController从另一个控制器(HomeController)调用一个控制器方法,通过这样做:

UsersController usersController = new UsersController();

但是我得到这个错误:生成构造函数存根在'CTHRC.Roti.Web.UI.Controllers.UsersController'

我不明白这个错误。

这是我的UsersController:
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;
using System.Web.Http;
using CTHRC.Roti.Domain.Api.Services;
using CTHRC.Roti.Domain.Model;
namespace CTHRC.Roti.Web.UI.Controllers
{
    public class UsersController : ApiController
    {
         protected readonly UsersService UsersService;
        public UsersController(UsersService usersService)
        {
            UsersService = usersService;
        }
        [HttpGet]
        public dynamic Get(int UserId)
        {
            return UsersService.Get(UserId);
        }
    }
}

这是我的HomeController:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebMatrix.WebData;
namespace CTHRC.Roti.Web.UI.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Default/
        public ActionResult Index()
        {
            if (!WebSecurity.IsAuthenticated)
            {
                Response.Redirect("~/account/login");
            }
            UsersController userController = new UsersController();
            return View();
        }
    }
}

我该怎么做才能解决这个问题?任何帮助都会很感激。谢谢。我尝试这样做的原因是因为我想要来自控制器方法的数据

ASP.NET MVC 4从另一个控制器调用控制器方法

您的UsersController没有调用站点所期望的无参数构造函数。

你可以像这样添加:

public UsersController() {
}

否则,您必须在呼叫站点提供UsersService作为参数。