我在使用Razor渲染视图时遇到问题。我有一个有趣的警告:
App_Web_q1mgjijg.dll中发生了'System.NullReferenceException'类型的异常但未在用户代码中处理
附加信息:未将对象引用设置为对象的实例。
与不同的库App_Web_qpwhgwuw.dll,App_Web_index.cshtml.e59e9c51.8k5fyp3z.dll,App_Web_2unx2e1e.dll或App_Web_xf32dsyo.dll相同我真的不知道发生了什么。
我的控制员:
public ActionResult Index(CandidatesAndPartyViewModel vm)
{
vm = new CandidatesAndPartyViewModel
{
Candidates = _repositoryCandidates.Candidates,
PoliticalParties = _repositoryPoliticalParty.PoliticalParties,
TypesOfElections = _repositoryTypeOfElection.TypeOfElections,
};
return View(vm);
}
并重新正确填充模型。
我的观点:
@foreach (var election in Model.TypesOfElections)
{
<div id="@election.Id">
@foreach (var politicalParty in Model.PoliticalParties.OrderBy(x => x.NameOfPoliticalParty))
{
<div id="@politicalParty.NameOfPoliticalParty.Replace(" ", "-").Replace("'", "-")" class="section scrollspy">
<p class="nameOfParty">@politicalParty.NameOfPoliticalParty</p>
<div class="nameOfCandidats">
@foreach (var candidate in Model.Candidates.Where(x => x.PoliticalParty.Id == politicalParty.Id &&
x.TypeOfElections.NameOfElection == election.NameOfElection))
{
<p>
@candidate
</p>
}
</div>
</div>
}
</div>
}
错误行是:
x => x.PoliticalParty.Id == politicalParty.Id &&
x.TypeOfElections.NameOfElection == election.NameOfElection)
我尝试显示whitout该行和视图正常工作,但需要这一行:( 谢谢!
答案 0 :(得分:0)
我最好的猜测是x.TypeOfElections
为空。至于为什么,你的实体类的可见性不够。通常,如果您需要访问可能为null的属性的成员,则应首先进行空检查,这里最简单的方法是添加条件:
x.TypeOfElections != null && x.TypeOfElections.NameOfElection == election.NameOfElection
我可以猜测为什么这可能是空的,但是再次,如果没有你的实体类,它是不可能确定的。更有可能的是,您忽略了该属性上的virtual
关键字。实体框架通过覆盖属性来自动加载相关实体,以添加其延迟加载逻辑。如果属性不是虚拟的,则它无法覆盖,因此无法加载关系。