2012-09-18 52 views
0

我試着從這裏和幾個其他資源,以在我的viewmodel中創建一個非常簡單的成員,並顯示它作爲下拉列表中的幾個例子我的觀點與dropdownlistfor()助手。我似乎無法把頭繞在它身上,它不適合我所嘗試的。html.dropdownlistfor()麻煩...獲取空引用異常

這裏是我的視圖模型:

public class Car 
{ 
    public int CarId { get; set; } 
    public string Name { get; set; } 
} 

public class MyViewModel 
{ 


    public IEnumerable<Car> Cars = new List<Car> { 
     new Car { 
      CarId = 1, 
      Name = "Volvo" 
     }, 
     new Car { 
      CarId = 2, 
      Name = "Subaru" 
     } 
    }; 


    public int MyCarId { get; set; } 
} 

,這裏是我的觀點:

@Html.DropDownListFor(m => m.MyCarId, new SelectList(Model.Cars, "CarId", "Name")) 

,這裏是我的控制器:

public ActionResult MyView() 
     { 
      return View(); 
     } 
+0

見http://stackoverflow.com/questions/7142961/mvc3-dropdownlistfor-a-simple-example – nunzabar

+0

這實際上是我遵循的例子(幾乎是這封信)。最初我的設置與此相同,但獲得了相同的結果,因此我嘗試從MyViewModel類中提取汽車類。仍然收到空引用例外。 –

+0

你可以添加你的'Controller'代碼到你的問題嗎? – Gromer

回答

1

你需要確保你的模型發送到您的視圖:

public ActionResult Index() 
{ 
    var myViewModel = new MyViewModel() 

    return View(myViewModel); 
} 

而在你查看你需要確保你定義你的模型:

@model namespace.MyViewModel 
+0

這讓我非常感謝。問題是,我的viewmodel中有一些其他成員(對於標籤和文本框等),它們在viewmodel的實例中傳遞的時候顯示得很好。爲什麼dropdownlist要求傳入實例而其他的不傳遞呢? –

+0

@ChristopherJohnson如果沒有看到完整的代碼,不能告訴你。 – Kittoes0124

1

您例如工作正常,我想你忘記了在POST操作中發送MyViewModel。

[HttpPost] 
public ActionResult Index(MyViewModel model) 
{ 
    return View(model); 
}