Я работаю с ASP.NET Core 8.0.8. Мое приложение Razor Page имеет динамическую страницу Table.cshtml с маршрутом @page "/table/{table}", которая может принимать любую модель и отображать связанную информацию базы данных в формате с возможностью поиска. фильтруемая и сортируемая таблица. На этой странице Table.cshtml также показаны связанные действия, доступные пользователю на основе модели. У меня есть класс TableModel.cs, который обрабатывает все базовые запросы OnGet и OnPost, но некоторые модели расширяют этот класс, включив в него определенные обработчики OnPost (
, OnPostUpdate, OnPostDelete и т. д.) или задайте разные роли [Authorize(Roles = ...)]. Вот в чем моя проблема. Я просто не знаю, как прикрепить эти производные классы TableModel к моей странице Table.cshtml без создания отдельной/дубликата страницы для каждого. У меня множество моделей, поэтому я бы предпочел хранить логику рендеринга и базовую логику на одной странице.
Например:
- < ли> — доступен всем, использует класс TableModel.cs
- — доступен для аутентифицированных пользователей, использует класс ItemsTableModel.cs
- — доступен администраторам, использует класс UsersTableModel.cs
Я пытался вручную настроить маршрутизацию страниц в Program.cs< /code>, но безрезультатно.
Код: Выделить всё
options.Conventions.AddPageRouteModelConvention("/table/items", model => { new MyApp.Pages.ItemsTableModel(builder.Configuration); });
options.Conventions.AddPageRouteModelConvention("/table/users", model => { new MyApp.Pages.UsersTableModel(builder.Configuration); });
Я также пытался использовать частичные представления, но у меня возникли проблемы с необходимой IConfiguration.
Я знаю, что установка производного класса в качестве свойства также является вариантом, но я Я не уверен, как это будет работать с конкретными обработчиками OnPost. Открыт для любых предложений (если это вообще возможно).
Подробнее здесь:
https://stackoverflow.com/questions/792 ... ngle-route