我有一个叫Shopex的项目。
我改名为人力资源部
现在请求控制器
我得到以下错误
找到与URL匹配的多个控制器类型。如果多个控制器上的属性路由与请求的URL匹配,则可能发生这种情况。
请求找到了以下匹配的控制器类型: HR.Web.Controllers.EmployeeController Shopex.Web.Controllers.EmployeeController
我改变了
public static void ConfigureMvc(RouteCollection routes)
{
AreaRegistration.RegisterAllAreas();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Employee", action = "Index", id = UrlParameter.Optional },
new[] { "HR.Web.Controllers" }
);
}所以我添加了名字空间HR.Web.Controllers
现在,我需要在每个控制器类中作为一个属性来执行这个操作吗?
这是我的控制器
namespace HR.Web.Controllers
{
[RoutePrefix("admin/employees")]
public class EmployeeController : BaseController
{
private readonly IEmployeeService _employeeService;
private readonly int _pageSize;
public EmployeeController(IEmployeeService EmployeeService)
: base()
{
_employeeService = EmployeeService;
_pageSize = 10;
}
[Route("")]
public async Task<ActionResult> Index(int pageIndex = 1, string q = "")
{
var employees = await GetEmployees(pageIndex, q, true);
return View(employees);
}
[Route("unique")]
public async Task<ActionResult> Unique(int pageIndex = 1, string q = "")
{
return Redirect("~/admin/Departments");
}
[Route("add")]
public async Task<ActionResult> Add()
{
return View();
}
[Route("add")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Add(Employee employee)
{
await _employeeService.AddAsync(employee);
return RedirectToAction("Index");
}
[Route("edit/{id:int:min(1)}")]
public async Task<ActionResult> Edit(int id)
{
var employee = await _employeeService.GetByIdAsync(id);
if (employee == null)
{
return RedirectToAction("Index");
}
return View(employee);
}
[Route("edit/{id:int:min(1)}")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(Employee employee)
{
await _employeeService.UpdateAsync(employee);
return RedirectToAction("Index");
}
[Route("delete/{id:int:min(1)}")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Delete(int id)
{
var isAuthorized = await _employeeService.Delete(id);
return RedirectToAction("Index");
}
private async Task<IList<Employee>> GetEmployees(int pageIndex, string keyword, bool shared)
{
if (pageIndex < 1)
{
pageIndex = 1;
}
var list = await _employeeService.GetAllAsync(pageIndex, _pageSize, keyword, shared);
return list;
}
}
}发布于 2021-12-31 09:20:56
按照错误的说法,
The request has found the following matching controller types: HR.Web.Controllers.EmployeeController Shopex.Web.Controllers.EmployeeController这意味着您有多个EmployeeController。检查HR.Web.Controllers和Shopex.Web.Controllers中是否有多个控制器。如果不是,那么编译后的dll(选中bin文件夹)中可能有重复的控制器。
https://stackoverflow.com/questions/70534871
复制相似问题