2012-03-23 57 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嗎?視圖中使用了正確的模型嗎?該視圖是由控制器傳入的嗎? – 2012-03-23 23:45:02

+0

爲什麼在世界上你使用'新的SelectList(Model.StatusList,「Value」,「Text」)''''StatusList'已經是'IEnumerable ' - 你只需要創建一個完全相同的'IEnumerable '第一個 - 它只是'Html.DropDownListFor(m => m.Status,Model.StatusList)' – 2017-01-11 12:00:02

回答

1

這個錯誤通常當你離開模型的場空或型號是空

確保「狀態」不爲空和你發生在回報「查看」就像這樣的模式:

//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:
SelectList實現IEnumerable<SelectListItem>所以在看你的代碼可能是這個樣子:

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

您不需要再次實例化。

+0

是的,我沒有把模型傳遞給視圖。對於ASP.NET MVC還是新手。這樣一個簡單的錯誤。謝謝您的幫助。 – 2012-09-14 17:44:40

0

我覺得特拉維斯是對的,你忘了安裝StatusList,也許它是空的。

+0

你將如何安裝StatusList? – 2012-03-24 00:19:20

相關問題