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());
}