ASP.NET MVC with Entity FrameworkNULL이 아닌 ViewData가 NULLpointer 오류를 발생시킵니다.
페이지 모델에 포함되지 않은 정보를 표시하기 위해 뷰 데이터를 사용했습니다. 양식에는 강력한 형식의 모델이 들어 있지만 고객 정보는 양식 외부의 맨 위에 표시됩니다. 폼을 제출하기 전에 표시된 정보를 볼 수 있으므로 null이 아니며 양식의 일부가 아니므로 양식을 보낼 때 오류가 발생하는 이유는 무엇입니까?
코드 내가 프랑스어로 SQL 스택에 대해 사과 오류
@model Sondage_Epicier.Models.Sondage_Vendeur
@{
Sondage_Epicier.Models.CLIENT cust = (Sondage_Epicier.Models.CLIENT)
ViewData["Customer"];
}
<div id="sondage">
<div class="subForm" style="margin-bottom: -20px;">
<p class="info">@Resources.numClient2 @cust.NO_CLIENT</p><br />
<p class="info">@Resources.nom @cust.NOM</p><br />
<p class="info">@Resources.address @cust.ADR_1 , @cust.VILLE</p>
</div>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true, "", new { @class = "" })
@Html.HiddenFor(model => model.SondageID)
@Html.HiddenFor(model => model.Date_Envoye)
@Html.AntiForgeryToken()
을 일으키는 원인이되는 @cust이 문제 @Resources가
ViewData 대신 [ViewModel] (http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc)을 사용하면 문제가 해결됩니다. 많은 사람들은 ViewData가 안티 패턴이라고 생각하며 어쨌든 사용해서는 안됩니다. – Liam
양식이 유효성 검사를 통과하지 못하면 페이지가 다시로드됩니다. ViewData 요소를 재설정하지 않는 경우, 귀하의 말처럼 양식에 포함되어 있지 않기 때문에 NULL이됩니다. 또한 PRG (post, redirect, get)를 따르지 않고 POST 메서드에서 View ("myviewname")를 반환하는 경우 다시 값을 다시 설정하지 않으면 ViewData가 NULL이됩니다. – Tommy
ViewData를 다시로드해야합니다. 이것 참조 http://stackoverflow.com/a/43083773/40521 – Shyju