首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到了与URL匹配的多个控制器类型?

问为什么我得到了与URL匹配的多个控制器类型?
EN

Stack Overflow用户
提问于 2021-12-30 17:31:33
回答 1查看 237关注 0票数 0

我有一个叫Shopex的项目。

我改名为人力资源部

现在请求控制器

我得到以下错误

找到与URL匹配的多个控制器类型。如果多个控制器上的属性路由与请求的URL匹配,则可能发生这种情况。

请求找到了以下匹配的控制器类型: HR.Web.Controllers.EmployeeController Shopex.Web.Controllers.EmployeeController

我改变了

代码语言:javascript
复制
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

现在,我需要在每个控制器类中作为一个属性来执行这个操作吗?

这是我的控制器

代码语言:javascript
复制
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;
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-12-31 09:20:56

按照错误的说法,

代码语言:javascript
复制
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文件夹)中可能有重复的控制器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70534871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档