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) でオブジェクト参照を取得しています。

特定のIDのデータベースにデータがないため、コントローラーアクションからビューに渡すビューモデル「emp」がnullであるため、このエラーが発生します。

このオブジェクト参照エラーを回避するにはどうすればよいですか?

4

1 に答える 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(); } 
     }
}
于 2013-02-04T12:34:27.270 に答える