Я новичок в ASP. Net Core (в данном случае 3.0), и я пытаюсь создать меню, которое будет отображаться во всех представлениях веб-приложения, создается динамически и должно быть заполнено только один раз. , Ниже я объясняю шаги и пробные выходы, которые я сделал для достижения необходимой цели (при необходимости я могу поделиться кодом, который я использую).
Это то, что я сделал:
- Проще говоря, используя страницу "_Layout.cs html", я создал меню stati c HTML и заставил все другие представления просто наследовать этот макет. Пока все хорошо;
- Следующая проблема возникает из-за того, что пункты меню создаются динамически после входа пользователя в систему, что мне удалось преодолеть, установив ModelView внутри контроллера (
HomeController.cs
с помощью Index
действие в данном случае), а затем доставить его в представление. В этом случае работает нормально, поскольку страница по умолчанию - ~\Home\Index\
, проблема заключается в том, что когда я переключаюсь на другое представление с другим контроллером, меню должно отображаться снова, и поэтому мне приходится копировать код (возникла проблема создания BaseController и BaseModel на основе этого поста рядом с OnActionExecuted
для размещения кода, генерирующего меню) - Теперь самая большая проблема заключается в том, что я могу заполнить меню только один раз, после входа пользователя в систему. Каждый раз, когда происходит переадресация между различными контроллерами / представлениями (постбэк одного и того же контроллера / представления работает нормально), модель равна нулю внутри
OnActionExecuted
, я пытался использовать ViewData, ViewBag, TemData, но все они равны нулю.
Итак, мой вопрос заключается в том, как сохранить эти указанные c данные живыми и общими, в основном по всем представлениям, и заполняется только один раз (после каждого входа пользователя) между перенаправлениями из разных представлений? Я читал вокруг и нашел несколько решений, кроме того, которое я сделал, но я не нашел ни одного, который мог бы поддерживать данные во время сеанса пользователя так, как мне нужно:
Подводя итог, мой поток в этот момент выглядит следующим образом:
- User Logged- в
- Перенаправление на значение по умолчанию:
~\Home\Index
MenuModelView.cs
для меню создается и HomeController.cs
возвращается к Index.cshtml
с подключенной к нему моделью. Index.cshtml
получает заполненный ModelView и использует _Layout.cshtml
_Layout.cshtml
создает теги HTML для меню на основе данных MenuModelView.cs
- Пользователь переходит к другому view и шаги с 3 по 5 повторяются с указанного c контроллера / view