#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");
}