Core) существует уже почти десять лет. Razor Pages, в частности, я думаю, что только около года. Если вы новичок во всем этом, это может быть немного запутанным. Есть много совпадений, но есть и различия. Ядро - абсолютно верный путь для любой новой разработки. Я просто хотел, чтобы вы знали, чтобы вы встали на правильный путь.

я проблемы с попыткой создать представление со строго типизированной моделью. Неважно, что я передаю в качестве модели дляView()Я всегда получаюNullReferenceException когда даже просто доступ кModel.

Я даже не могу проверить, является ли модель нулевой, до выполнения остальной части страницы бритвы; просто делатьif (Model != null) также бросает то же самоеNullReferenceException.

Index.cshtml

@page
@model EncodeModel
@{
    Layout = "~/Pages/Shared/_Layout.cshtml";
}

<h2>Encode</h2>

<div id="progress">
    @await Html.PartialAsync("~/Encoder/MVC/EncodeProgress.cshtml", new EncodeModule())
</div>

EncodeProgress.cshtml

@page
@model FFenc.IEncoderModule

@{
    var module = Model; //this throws the NullReferenceException
}

Startup.cs

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseMvc();
    }

Трассировка стека исключений:

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

AspNetCore.Encoder_MVC_EncodeProgress.get_Model ()
AspNetCore.Encoder_MVC_EncodeProgress.ExecuteAsync () в EncodeProgress.cshtml
модуль var = модель;

Что я делаю неправильно? Я попытался несколько исправлений и обходных путей (используя ViewComponent вместо представления), но ничего не работает.

Некоторые похожие вопросы, которые я нашел, не решили мою проблему:

Ошибка ядра модели ASP.NET в представлении индекса

Я уже передаю модель, поэтому этот ответ ничего не меняет в моих действиях. Например, когда я пытался использовать контроллер в качестве обходного пути, то же самоеNullReferenceException случилось с этим кодом:

    [Route("/encode/progress")]
    public IActionResult GetProgress()
    {
        return View("~/Encoder/MVC/EncodeProgress.cshtml", new EncoderModule());
    }

Ответы на вопрос(1)

Ваш ответ на вопрос