Asp.net mvc 3 asp.net MVC3中存在空引用错误
我在asp.NETMVC3视图中使用以下行Asp.net mvc 3 asp.net MVC3中存在空引用错误,asp.net-mvc-3,entity-framework-4,Asp.net Mvc 3,Entity Framework 4,我在asp.NETMVC3视图中使用以下行 @Model.AuthorizedAgent.Person.FirstName 但我得到了错误,因为AuthorizedAgent为null。如何避免此错误?这里有两个选项。第一个是确保模型具有价值。没有看到您的代码,我不知道这是否应该总是有值。另一个选项是有条件地获取值,您可以在ASP.NET和Razor视图引擎中轻松地执行此操作。您可以使用具有以下属性的视图模型: @Html.DisplayFor(x => x.AuthorizedAgen
@Model.AuthorizedAgent.Person.FirstName
但我得到了错误,因为AuthorizedAgent为null。如何避免此错误?这里有两个选项。第一个是确保模型具有价值。没有看到您的代码,我不知道这是否应该总是有值。另一个选项是有条件地获取值,您可以在ASP.NET和Razor视图引擎中轻松地执行此操作。您可以使用具有以下属性的视图模型:
@Html.DisplayFor(x => x.AuthorizedAgentFirstName)
然后让控制器执行必要的测试并相应地填充属性:
public ActionResult Foo()
{
SomeModel model = ...
SomeViewModel vm = new SomeViewModel();
// TODO: refactor this part to a mapping layer. AutoMapper is
// a good tool for the job
if (model.AuthorizedAgent != null && model.AuthorizedAgent.Person != null)
{
vm.AuthorizedAgentFirstName = model.AuthorizedAgent.Person.FirstName;
}
return View(vm);
}
为了提供值为null的替代文本,您可以使用DisplayFormat
属性:
[DisplayFormat(NullDisplayText = "EMPTY")]
public string AuthorizedAgentFirstName { get; set; }
简单,确保AuthorizedAgent不为null。要获得更多帮助,您需要向我们展示更多代码。:)如果我想在某个值为null时提供备用文本,该怎么办?我将创建一个名为firstname的属性的viewmodel,然后根据该值是否为null在控制器中设置该属性,以避免在视图中放置逻辑。