Asp.net mvc 3 asp.net MVC3中存在空引用错误

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

我在asp.NETMVC3视图中使用以下行

@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在控制器中设置该属性,以避免在视图中放置逻辑。