2011-07-01 52 views
3

我公司擁有一批Html.Listbox對我的看法正在被由IEnumberable<SelectListItem>ASP.net MVC列表框

人口控制有沒有一種方式,填充數據時,有些項目會自動選擇?

IEnumerable中的特定選擇列表項目被標記爲Selected = true,但這並未傳達到視圖中。

的視圖是爲這樣:

<%= Html.ListBox("projects", Model.Projects)%> 

感謝。

回答

10

當然一如既往你開始通過定義將代表信息的視圖模型,你想顯示具體的看法:

public class MyViewModel 
{ 
    public string[] SelectedItems { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

然後控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      SelectedItems = new[] { "1", "3" }, 
      Items = new[] 
      { 
       new SelectListItem { Value = "1", Text = "Item 1" }, 
       new SelectListItem { Value = "2", Text = "Item 2" }, 
       new SelectListItem { Value = "3", Text = "Item 3" }, 
      } 
     }; 
     return View(model); 
    } 
} 

終於在您的強類型視圖:

<%= Html.ListBoxFor(
    x => x.SelectedItems, 
    new SelectList(Model.Items, "Value", "Text") 
) %> 

如預期的那樣項目1項目3將在列表框呈現時預選。

+0

優秀,按預期工作。當我向老闆詢問這個方法時,事實上我曾經做過,他說MVC模型應該是無狀態的,我們不應該跟蹤這樣的數據。相反,它應該在View和Model之間傳遞數據,並處理僅傳遞的內容。那是對的嗎?謝謝。 –