如何在html帮助器中处理空引用异常

时间:2013-08-08 11:55:02

标签: asp.net-mvc razor html-helper

我正在开发一个asp.net mvc web应用程序,我有以下viewModel: -

public class ServerJoin
    {
        public TMSServer Server { get; set; }
        public Resource Resource { get; set; }
        public Technology Technology { get; set; }
        public ComponentDefinition ComponentDefinition { get; set; }
        public SDOrganization Site { get; set; }
        public SDOrganization Customer { get; set; }
        public IEnumerable<NetworkInfo> NetworkInfo { get; set; }
    }

在用于编辑和创建新ServerJoin对象的_createANDupdate视图中,我有以下内容: -

@model TMS.ViewModels.ServerJoin

<span class="f">IP Address</span> 

    @Html.EditorFor(model=>model.NetworkInfo.IPADDRESS)
    @Html.ValidationMessageFor(model=>model.NetworkInfo.IPADDRESS) | 
    @Html.CheckBox("IsIPUnique",new  { @checked = "checked" } ) IP Unique. 

</div>

但我遇到的问题是NetworkInfo是一个集合,因此我无法直接访问其IPADDRESS属性。如果我写了以下foreach: -

@foreach(var n in Model.NetworkInfo)

我将获得空引用异常

  

对象引用未设置为objec的实例

所以我如何才能解决这个问题并具备以下条件: -

  1. 如果我在编辑视图中,我应该显示所有IP地址(1个编辑器,2个编辑器等)。

  2. 如果我在创建视图中,我应该只创建一个ip编辑器?

  3. 由于

2 个答案:

答案 0 :(得分:0)

试试这个

@If(Model.NetworkInfo!=null)
{
   Html.EditorFor(model=>model.NetworkInfo.IPADDRESS)
   Html.ValidationMessageFor(model=>model.NetworkInfo.IPADDRESS) | 
   Html.CheckBox("IsIPUnique",new  { @checked = "checked" } ) IP Unique.

}
else
{
    foreach(var n in Model.NetworkInfo)
    {
       ......
     }

}

答案 1 :(得分:-1)

类似的东西:

@If(Model.NetworkInfo.Count() == 0)
{
   Html.EditorFor(model=>model.NetworkInfo.IPADDRESS)
   Html.ValidationMessageFor(model=>model.NetworkInfo.IPADDRESS) | 
   Html.CheckBox("IsIPUnique",new  { @checked = "checked" } ) IP Unique.

}
else
{
    foreach(var n in Model.NetworkInfo)
    {
       ......
     }

}