0

私はMVC3Razorに不慣れです。現在、このエラー「オブジェクト参照がオブジェクトのインスタンスに設定されていません。 」に直面していますが、これが何であるかわかりません。

モデル内

    public List<SelectListItem> CatList { get; set; }

    [Display(Name = "Category")]
    public string CatID { get; set; }

コントローラ内

    public ActionResult DisplayCategory()
    {
        var model = new CatModel();
        model.CatList = GetCat();
        return View(model);
    }


    private List<SelectListItem> GetCat()
    {
        List<SelectListItem> itemList = new List<SelectListItem>();
        itemList.Add(new SelectListItem { Text = "1", Value = "1" });
        itemList.Add(new SelectListItem { Text = "2", Value = "2" });
        return itemList;
    }

CSHTMLで

@using (Html.BeginForm())
{
    <table>
    <tr>
    <td>@Html.LabelFor(c => c.CatID)</td>
    <td>@Html.DropDownListFor(c => c.CatID, Model.CatList)</td>
    </tr>

    </table>
}

助けてくれてありがとう。

4

1 に答える 1

1

ビューモデルのプロパティを再割り当てするのを忘れた POST アクションがあると思われるCatListため、フォームが最初にレンダリングされたときではなく、フォームを送信したときに NRE を取得しています。

public ActionResult DisplayCategory()
{
    var model = new CatModel();
    model.CatList = GetCat();
    return View(model);
}

[HttpPost]
public ActionResult Index(CatModel model)
{
    // some processing ...

    // since we return the same view we need to populate the CatList property
    // the same way we did in the GET action
    model.CatList = GetCat();
    return View(model);
}


private List<SelectListItem> GetCat()
{
    List<SelectListItem> itemList = new List<SelectListItem>();
    itemList.Add(new SelectListItem { Text = "1", Value = "1" });
    itemList.Add(new SelectListItem { Text = "2", Value = "2" });
    return itemList;
}
于 2012-09-18T10:37:13.053 に答える