2012-03-23 30 views
2

asp.net mvcを使用してドロップダウンリストを作成しようとしています。asp.net mvc dropdownlistforオブジェクト参照がオブジェクトエラーのインスタンスに設定されていません

モデル:

public string Status { get; set; } 

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

    public AddUser() 
    { 
     StatusList = new List<SelectListItem> 
         { 
          new SelectListItem{Value = "0",Text = "0"}, 
          new SelectListItem{Value = "1",Text = "1"} 
         }; 
    } 

ビュー:

<%: Html.DropDownListFor(m=>m.Status,new SelectList(Model.StatusList,"Value","Text")) %> 
<%: Html.ValidationMessageFor(m => m.Status) %> 

私はなぜ知らないが、私はこのエラーを得続ける:オブジェクトのインスタンスに設定されていない

オブジェクト参照。

誰かが私が間違っていることを知っていますか?

+0

AddUserを呼び出してStatusListをインスタンス化してもよろしいですか?ビューで正しいモデルが使用されていますか?コントローラがビューを渡していますか? –

+0

なぜ新しいSelectList(Model.StatusList、 "Value"、 "Text")を使用しているのですか? - StatusListはすでに 'IEnumerable 'です - あなたはただ同じIEnumerable を作成しています最初の1つ - その 'Html.DropDownListFor(m => m.Status、Model.StatusList)' –

答えて

1
あなたはヌルモデルのフィールドを残したり、モデルが

は「Status」がnullでないことを確認してくださいnullで、このエラーは通常起こる

あなたのリターンだけで、このような「ビュー」のモデル:

//end of an action code 
    AddUser model = new AddUser(); 

    model.Status = "0"; //status can't be null (cause the the exception cited earlier) 

    return View(model); //if you do not pass the model as argument the model will be null in view 
} 

とUのためのもう一つのヒント:

<%: Html.DropDownListFor(m=>m.Status, Model.StatusList) %> 
<%: Html.ValidationMessageFor(m => m.Status) %> 

クラス SelectListは、ビューにあなたのコードは次のようなものに見えるかもしれので IEnumerable<SelectListItem>を実装

再度インスタンス化する必要はありません。

+0

ええ、私はモデルをビューに渡しませんでした。まだASP.NET MVCの新機能は残っていました。そのような単純な間違い。助けてくれてありがとう。 –

0

私はTravisがそうだと思います。あなたはStatusListをインストールするのを忘れました。多分それはnullです。

+0

どのようにStatusListをインストールしますか? –

関連する問題