首页 文章

ASP MVC错误:对象引用未设置为对象的实例

提问于
浏览
0

我的看法

<table>
                 <tr>
        <td>
            Middle Name : 
        </td>
        <td>
            @Html.EditorFor(model => @Model.EmployeeDetail.MiddleName)
        </td>
        <td>
            @Html.ValidationMessageFor(model => @Model.EmployeeDetail.MiddleName)
        </td>
    </tr>
    <tr>
        <td>
            Last Name : 
        </td>
        <td>
            @Html.EditorFor(model => @Model.EmployeeDetail.LastName)
        </td>
        <td>
            @Html.ValidationMessageFor(model => @Model.EmployeeDetail.LastName)
        </td>
    </tr>
    <tr>
        <td>
            Date of Birth  : 
        </td>
        <td>
            @Html.EditorFor(model => @Model.EmployeeDetail.DateOfBirth)
        </td>
        <td>
            @Html.ValidationMessageFor(model => @Model.EmployeeDetail.DateOfBirth)
        </td>
    </tr>
</table>

我的控制器动作

public ActionResult Index()
    {
        var id = 0;
        if (Session["id"] != null)
        {
            id = Convert.ToInt32((Session["id"].ToString()));
        }
        var empDetails = _empRepository.GetEmployeeDetails(id);
        var emp = new UserViewModel { EmployeeDetail = empDetails };
        return View(emp);
    }

我的观点模型

public class UserViewModel
{
    public EmployeeDetail EmployeeDetail { get; set; }
}

我的模特

public partial class EmployeeDetail
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public System.DateTime DateOfBirth { get; set; }
    public string IsAdmin { get; set; }
}

在我看来,我在@ Html.ValidationMessageFor(model => @ Model.EmployeeDetail.DateOfBirth)获得对象引用

我收到此错误是由于viewmodel“emp”我从控制器操作传递到视图是null,因为我没有数据库中的特定Id的任何数据 .

如何避免此对象引用错误 .

1 回答

  • 1

    代替

    @Html.EditorFor(model => @Model.EmployeeDetail.DateOfBirth)
    

    使用

    @Html.EditorFor(model => model.EmployeeDetail.DateOfBirth)
    

    你应该为所有线路做...

    @Html.SomethingFor(model => model.EmployeeDetail.Something) // Not @Model.Something
    

    更新:

    不要让EmployeeDetail为null .

    public class UserViewModel
    {
         private EmployeeDetail _employeeDetail = new EmployeeDetail();
    
         public EmployeeDetail EmployeeDetail 
         { 
            get { return _employeeDetail; }
            set { _employeeDetail = value ?? new EmployeeDetail(); } 
         }
    }
    

相关问题