目前的行动请求' AdminManagement'在控制器类型' AdminController'在以下操作方法之间是不明确的

时间:2017-05-25 07:22:17

标签: c# url model-view-controller routing attributerouting

[Route("admins")]
public ActionResult AdminManagement()
{
    EmployeeBuslayer lstEmp = new EmployeeBuslayer();
    AdminManamegemtModel comModel = new AdminManamegemtModel();
    comModel = lstEmp.GetAdminsWithRole;
    return View(comModel);
}

#region AdminMaster
[HttpPost]
[ActionName("AdminManagement")]
public ActionResult AdminManagementPost()
{
    string SearchText = Request.Form["Search"].ToString().ToLower();
    EmployeeBuslayer lstEmp = new EmployeeBuslayer();
    List<AdminMaster> dataEmployee = null;
    AdminManamegemtModel comModel = new AdminManamegemtModel();
    AdminManamegemtModel comModelfromDB = lstEmp.GetAdminsWithRole;
    dataEmployee = comModelfromDB.AdminMasterModel.Where(src => src.UserName.ToLower().Contains(SearchText) || src.EmailID.ToLower().Contains(SearchText)).ToList();
    comModel.AdminMasterModel = dataEmployee;
    comModel.AdminRoleMasterModel = comModelfromDB.AdminRoleMasterModel;
    return View("AdminManagement", comModel);

}

以上两种方法适用于同一视图。我有搜索按钮。点击搜索时,它会给我以下错误。

  

当前的行动请求&#39; AdminManagement&#39;在控制器类型上   &#39; AdminController&#39;以下操作方法之间不明确:   类型上的System.Web.Mvc.ActionResult AdminManagementPost()   MVCAdminDemo.Controllers.AdminController System.Web.Mvc.ActionResult   类型为MVCAdminDemo.Controllers.AdminController的AdminManagement()。一世   可以通过从AdminManagementPost()中删除ActionName来解决此错误   ,但问题是URL更改,我不希望这样。 url应该是   http://localhost:52499/admin/admins

AdminManagement()是加载默认值

的Get方法加载

1 个答案:

答案 0 :(得分:0)

我认为动作名称在这里并不重要。由于您没有为第一个操作方法指定任何http动词,因此将其视为post。因此,每当您尝试呼叫此路线时,由于在同一路线上有两个带动词的动作方法,因此不明确。使用[HttpGet]装饰第一个动作方法,因为它看起来像是一个get动作。示例代码如下:

    [Route("api/datasync/get")]
    [HttpGet]
    public IHttpActionResult GetOne()
    {
        return Ok(1);
    }

    [Route("api/datasync/get")]
    [HttpPost]
    public IHttpActionResult GetOnes()
    {
        return Ok(1);
    }