У меня проблемы с попыткой создать представление со строго типизированной моделью. Независимо от того, что я передаю в качестве модели 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());
}