Переключение AdminLTE на тему SmartAdmin (контроллер для пути не найден) - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть веб-приложение. 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 рендерит представление перед заголовком и испортило пользовательский интерфейс.

Есть какой-нибудь подход к решению этой проблемы?

...