我被困在这个问题上。我有两个控制器,UsersController和HomeController中我试图做这从另一个控制器(HomeController中)调用从UsersController控制器方法:ASP.NET MVC 4从另一个控制器调用控制器方法
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();
}
}
}
我有什么做的,解决这一问题?任何帮助,将不胜感激。谢谢。我试图这样做的原因是因为我想要控制器方法中的数据。
为什么你需要实例化UserController?如果您尝试在此处发送用户,则可以使用'RedirectToAction(“ActionName”,“ControllerName”)'。 –
如果你正在从一个控制器调用另一个控制器的方法,我认为你应该重新考虑你的设计。控制器有很多开销和设置工作,并且没有必要重复它。拉出两个控制器要使用的通用代码,并将其移入公共区域,例如助手类。 –
此外,您的代码甚至不使用您正在启动的控制器。你的例子不完整吗? –