У меня есть веб-приложение. net 4.5 MVC, которое использует AdminLTE для пользовательского интерфейса. Я переключаю его на тему SmartAdmin. ниже приведена настройка макета
<head>
// CSS links and meta
</head>
<body class="mod-bg-1 mod-nav-link ">
<div class="page-wrapper">
<div class="page-inner">
@Html.Action("Index", "SideBar")
<div class="page-content-wrapper">
<header class="page-header" role="banner">
@Html.Partial("_LoginPartial")
</header>
<main id="js-page-content" role="main" class="page-content">
@RenderBody()
</main>
<footer class="page-footer" role="contentinfo">
</footer>
</div>
</div>
</div>
</body>
@Html.Action("Index", "SideBar")
- это панель навигации, различная для каждой роли.
@Html.Partial("_LoginPartial")
имеет часть заголовка пользовательского интерфейса
@RenderBody()
для страниц модулей
Я развернул его в новом пустом. net 4.5 MVC проекте, и он там работает нормально. Боковая панель - это контроллер, как показано ниже
public ActionResult Index()
{
return PartialView("_AdminLayout");
}
Я изменю его на после того, как тема будет исправлена
public ActionResult Index()
{
if (User.IsInRole("Admin")){
return PartialView("_AdminLayout");
}else if (User.IsInRole("Teacher"))
{
return PartialView("_AdminLayout");
}else
{
return PartialView("GenericLayout");
}
}
В контроллере учетных записей пользователь переходит к контроллеру панели мониторинга после входа в систему .
if (UserManager.IsInRole(userID, "Teacher"))
{
System.Web.HttpContext.Current.Session["TeacherID"] = userID;
return RedirectToAction("Dashboard", "Teacher_Dashboard");
}
else if (UserManager.IsInRole(userID, "Student"))
{
System.Web.HttpContext.Current.Session["StudentID"] = userID;
return RedirectToAction("Dashboard", "Student_Dashboard");
}
else if (UserManager.IsInRole(userID, "Admin"))
{
System.Web.HttpContext.Current.Session["AdminID"] = userID;
return RedirectToAction("Dashboard", "Admin_Dashboard");
}
После входа в систему я получаю эту ошибку. {"The controller for path '/Admin_Dashboard/Dashboard' was not found or does not implement IController."}
После вышеуказанной ошибки я создал новое частичное представление в общей папке с именем «_Adminlayout» и заменил его @Html.Action("Index", "SideBar")
на @Html.Partial("_Adminlayout")
, но такой подход дал я StackOverflowException
. Я могу исправить эту ошибку, добавив Renderbody в конце частичной страницы _Adminlayout, но он испортил интерфейс, поскольку мне нужно визуализировать содержимое, а не после навигационной панели, потому что боковая панель / навигационная панель определена над заголовком, а не частью тела содержание. добавление Renderbody рендерит представление перед заголовком и испортило пользовательский интерфейс.
Есть какой-нибудь подход к решению этой проблемы?