Как перенаправить одно действие на другое действие в MVC5?

#c# #.net #asp.net-mvc-5

#c# #.net #asp.net-mvc-5

Вопрос:

Я хочу перейти RedirectToAction к другому действию внутри метода. Я использовал:

 return RedirectToAction("ActionName", "ControllerName");
  

Но я получаю сообщение об ошибке, оно не попадает в другое действие.

Мой код контроллера:

 public ActionResult VisitCount(VisitorsViewModel objvvm)
{
    var UserID = System.Web.HttpContext.Current.Session["UserID"].ToString();
    var objEmpDepUTID = db.UserRightsSettings
        .Where(u => u.UserID.ToString() == UserID)
        .Select(e => new
        {
            objemployeeID = e.EmployeeID,
            objdepartmentID = e.DepartmentID,
            objusertypeID = e.UserTypeID
        })
        .FirstOrDefault();

    var EmployeeID = objEmpDepUTID.objemployeeID;
    var DepartmentID = objEmpDepUTID.objdepartmentID;
    var UserTypeID = objEmpDepUTID.objusertypeID;

    if (DepartmentID == new Guid("47D2C992-1CB6-44AA-91CA-6AA3C338447E") amp;amp;
       (UserTypeID == new Guid("106D02CC-7DC2-42BF-AC6F-D683ADDC1824") ||
       (UserTypeID == new Guid("B3728982-0016-4562-BF73-E9B8B99BD501"))))
    {
        return RedirectToAction("Index1", "NextFollowUp");
    }
    else
    {
        return RedirectToAction("Index2", "NextFollowUp");
    }
}

private ActionResult Index1()
{
    return View();
}

private ActionResult Index2()
{
    return View();
}
  

Приведенный выше код работает некорректно — он не попадает в другое действие, когда выполняется условие if. Я перепробовал все методы, но не нашел никакого решения.

Комментарии:

1. Предполагая, что ваш контроллер называется NextFollowUpController, он должен работать. Нажмите F12 и просмотрите сетевую активность, проверьте точный URL, на который он пытается перенаправить.

2. Да, мой контроллер — это контроллер NextFollowup, который упоминается на этом изображении, и я проверил, используя точку отладки. он не попал в действие Index1

3. Вам нужно использовать отладчик браузера, F12

4. Ваши методы private . Создайте их public (вы не можете перенаправить на частные методы)

5. @snehasusan вы добавили return View() в visitCount actionresult

Ответ №1:

Вы не можете перенаправить на помеченный метод private . Вам нужно создать свои методы public .

 public ActionResult Index1()
{
    return View();
}
public ActionResult Index2()
{
    return View();
}
  

Ответ №2:

Если вы находитесь внутри того же контроллера, попробуйте это:

 return RedirectToAction("Index1");
  

Вместо:

 return RedirectToAction("Index1", "NextFollowUp");
  

Если вы вызываете действие с другого контроллера, используйте это:

 RedirectToAction("Index1", "NextFollowUp");  
  

Или попробуйте этот код:

 return View("ActionName");
  

Вот так:

 if (DepartmentID == new Guid("47D2C992-1CB6-44AA-91CA-6AA3C338447E") amp;amp;
   (UserTypeID == new Guid("106D02CC-7DC2-42BF-AC6F-D683ADDC1824") ||
   (UserTypeID == new Guid("B3728982-0016-4562-BF73-E9B8B99BD501"))))
{
   return View("Index1");
}
else
{
    return View("Index2");
}