Я создал проект MVC веб-приложения с аутентификацией индивидуальных пользователей.
Впоследствии я создал собственный UserIdentity. Я пытаюсь изменить представление Identity по умолчанию «Регистрация», добавляя мои новые поля, однако мне удалось создать только новые страницы как Razor Pages.
Мой вопрос: можно ли объединить эти новые представления в некую структуру, например MVC? Я вообще не хотел бы смешивать MVC с Razor Pages.
Если это невозможно, есть ли способ создать контроллер, который переопределяет поведение по умолчанию (например, Identity / Account / Register)?
Нет, это невозможно. Команда Identity решила переключиться на Razor Pages для пользовательского интерфейса по умолчанию, и теперь это все, что есть. Если хотите, вы можете вручную создавать контроллеры и представления, ссылаясь на код из шаблонов Razor Pages, чтобы создать то же самое в MVC, но это ваша ответственность. Нет автоматического способа сделать это.
Это именно то, что я делаю сейчас, когда премьер-министр сказал, что «это запутает других разработчиков», если у нас будет MVC повсюду, луковая архитектура, и вдруг весь материал Identity окажется на страницах Razor, а также вся логика там. Честно говоря, я понял его точку зрения, это просто выглядит и кажется "грязным"
Раньше я плохо относился к Razor Pages, но они мне нравились. У них очень ограниченный сценарий использования, но они не могут быть побеждены в этом сценарии: в основном простой CRUD и в основном статические страницы с данными. Они полностью автономны, и поэтому их очень легко понять. Нужно что-то изменить на странице редактирования Foo? Перейдите на страницу FooEdit Razor. Сделанный. Сначала я попытался переработать идентичность в структуру MVC, но затем понял, что версию Razor Page намного проще использовать и поддерживать.
Вас не беспокоит, что (если это так) остальная часть проекта следует какому-то строгому шаблону проектирования, Identity или любая другая основанная на Razor часть «выделяется»? Мне искренне любопытно, потому что я схожу с ума, пытаясь следовать некоторому шаблону, и Microsoft бросает на него гаечный ключ :) Мой проект Core не должен вообще зависеть от ASP, но теперь он должен, поскольку ApplicationUser должен расширять IdentityUser и таким образом требуя зависимости. Должен ли я просто не волноваться и продолжать?
Лот, чтобы развернуть там. Честно говоря, я бы сказал, что шаблон MVC в значительной степени уходит. Слишком много движущихся частей, и, честно говоря, Microsoft с самого начала не справилась с этим должным образом. Большинство веб-сайтов можно полностью создать с помощью Razor Pages. Конечные точки API технически остаются MVC, но на самом деле в этом уравнении нет буквы V. Для более продвинутых требований к приложениям, Razor Components / Blazor - это билет. Это или традиционные клиентские фреймворки, такие как Angular. В любом случае нет никакого MVC. Честно говоря, я не могу придумать хороший вариант использования для настройки чистого стиля MVC.
Для всех, кто хочет «выстроить» идентичность в MVC, я рекомендую следующий подход:
Зайдите в официальный репозиторий ASP.net на Github (https://github.com/aspnet/Identity) и загрузите его. Откройте решение и найдите проект IdentitySample.Mvc. Скопируйте необходимые файлы в свой проект.
Важная заметка: Не забудьте изменить пространство имен добавленных файлов, поскольку они принадлежат другому проекту.
«Я бы не хотел смешивать MVC с Razor Pages» - почему бы и нет? Они не конфликтуют. Фактически, Razor Pages является (построенный поверх) MVC.