asp.net MVC3中的空引用错误

时间:2011-04-26 14:48:54

标签: asp.net-mvc-3 entity-framework-4

我在asp.net MVC 3视图中使用以下行。

@Model.AuthorizedAgent.Person.FirstName

但是我收到错误,因为AuthorizedAgent为null。如何避免此错误?

2 个答案:

答案 0 :(得分:1)

您可以使用具有以下属性的视图模型:

@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; }

答案 1 :(得分:0)

这里有两种选择。首先是确保模型具有值。没有看到你的代码,我不知道这是否应该总是有一个值。另一个选项是有条件地获取值,您可以在ASP.NET和Razor视图引擎中轻松完成。