Как можно добавить область на страницах razor на dot net core 3.0 / 3.1?

Я хочу добавить области в ядре 3.1 в Razor Pages, но документы Microsoft предназначены для asp dot net core 2.2, и они хотят создать новый отчет в январе 2020 года!. Кто-нибудь знает, как добавить области в ядро ​​3.1?

Я много искал в Google, но не нашел ответа.

в _AdminLayout:

...
        <a asp-area="Channel" asp-page="Index" class="w3-bar-item w3-button w3-padding"><i class="fad fa-cog"></i>&nbsp; تنظیمات آپارات</a>
        <a asp-page="Channel/Index" class="w3-bar-item w3-button w3-padding"><i class="fad fa-cog"></i>&nbsp; تنظیمات آپارات</a>
...

asp-area="Channel" asp-page="Index" не работают и даже не создают URL при нажатии на обновление текущей страницы, но asp-page="Channel/Index" работают

и в индексе (индекс канала)

@page "{area?}"
@model Aparat.Web.Areas.Channel.Pages.IndexModel
@{
    Layout = "_AdminLayout";
}

<h1>INDDDEX</h1>

person sda2584541    schedule 04.12.2019    source источник
comment
пробовали ли вы эту документацию docs.microsoft .com / en-us / aspnet / core / mvc / controllers /   -  person moath naji    schedule 04.12.2019
comment
@moathnaji Да, app.UseMvc это для 2.2 на страницах core3 razor отдельно от MVC   -  person sda2584541    schedule 04.12.2019
comment
Области в Razor Pages 3.x включены по умолчанию. Просто добавьте папку с именем Areas в корень проекта и работайте оттуда: learnrazorpages.com/advanced / area # configuration   -  person Mike Brind    schedule 04.12.2019
comment
@MikeBrind у меня не работает. вы можете видеть изображения: back-end, back-end-2, front-end   -  person sda2584541    schedule 04.12.2019
comment
Вы должны включить соответствующий код (а не изображения) в свой пост и объяснить, что вы сделали, как вы ожидаете, что это будет работать, и что происходит вместо этого.   -  person Mike Brind    schedule 05.12.2019
comment
@MikeBrind Я редактирую пост   -  person sda2584541    schedule 05.12.2019
comment
Какая первая строка кода на странице Index.cshtml в области вашего канала?   -  person Mike Brind    schedule 05.12.2019
comment
Удалите шаблон маршрута со страницы. Просто оставьте директиву @page.   -  person Mike Brind    schedule 05.12.2019
comment
@MikeBrind Я снова обновляю пост и добавляю индексный код.   -  person sda2584541    schedule 05.12.2019
comment
@MikeBrind тот же результат   -  person sda2584541    schedule 05.12.2019


Ответы (1)


Это хорошо работает, когда я добавляю области, используя следующие шаги.

Создайте новое веб-приложение asp.net core 3.0 / 3.1, в области Channel щелкните правой кнопкой мыши папку Pages, выберите Добавить -> Новый элемент -> Страница Razor и создайте Index.cshtml, вы получите

введите здесь описание изображения

Ваш Index.cshtml не похож на структуру Razor Pages, как у меня из предоставленного вами изображения.

Index.cshtml:

@page
@model WebApplication1.Areas.Channel.Pages.IndexModel

<h1>Hello from Channel Area</h1>

Index.cshtml.cs:

namespace WebApplication1.Areas.Channel.Pages
{
    public class IndexModel : PageModel
    {
        public void OnGet()
        {
        }
    }
}

Ссылка для тестирования:

<a asp-area="Channel" asp-page="Index">TestRedirect</a>
person Ryan    schedule 05.12.2019
comment
не работает для меня, я не могу вспомнить, какое обновление было сделано для этого файла, чтобы отделить .cs от HTML (2.2 или 3.0), я выполнил ваши шаги (но все еще та же проблема) - person sda2584541; 05.12.2019
comment
Я думаю, что браузер кеширован. Я нажимаю Ctrl + f5 после того, как эта область работает! Но это требует дополнительных исследований. - person sda2584541; 05.12.2019
comment
Да думаю браузер кешировал. Спасибо, ребята, что помогли мне. - person sda2584541; 05.12.2019