我試圖修改填充ListBoxFor的答案,該列表框已經預先選定了我在這裏找到的值,並且在適應方面遇到了一些麻煩。在ASP.NET MVC中填充和使用MultiSelectList/ListBoxFor問題3
這是我一直提到的一個問題:here
這裏是我的類來定義列表對象
public class SelectListDTO {
public int ID { get; set; }
public string Name { get; set; }
}
我有一個填充的列表上一個類的方法SelectListDTO項目。 CheckRefresh檢查緩存是否過期,如果是,則重新緩存。因此,這種方法得到我的列表:
private List<SelectListDTO> GetSelectList() {
CheckRefresh();
var lst = new List<SelectListDTO>(_cache.Count + 1);
_cache.ForEach(item => lst.Add(new SelectListDTO { ID = item.ID, Name = item.Name }));
return lst;
}
我的模型與這些屬性/方法定義:
public class MyModel {
[Required]
[Display(Name = "Program Type")]
[Min(1, ErrorMessage = "Please select a Program Type")]
public int[] SelectedProgramTypes { get; set; }
public MultiSelectList ProgramTypes { get; set; }
public MyModel() {
PopulateProgramTypeList();
}
private void PopulateProgramTypeList() {
// Get all available list items
var programTypes = ProgramTypeService.Instance.GetSelectList;
// how to fill multiselectlist with my List<SelectListDTO> items;
ProgramTypes = new MultiSelectList(??)
}
}
問題的第1部分是從上面這裏^如何用我的名單填補MultiSlectList SelectListDTO對象
另外在我的控制器操作中,我從數據庫中獲取保存的項目,並需要將它們作爲SelectedProgramTypes傳遞給模型。這是目前我的行動:
public ActionResult Edit(int? id) {
// Code here to validate id and that user is associated with id
lenderProduct = new LenderProduct(id);
var model = BuildModel(lenderProduct); // returns instance or MyModel
var selectedProgramTypes = lenderProduct.ProgramTypes;
foreach (var item in selectedProgramTypes) {
/// How to fill the Model.SelectedProgramTypes array
}
return View(model);
}
問題的第二部分是如何讓我從數據庫中讀取到可以由MultiSelectList示範
使用的陣列當前選定的項目我覺得我是這個關閉但我錯過了一些模式或希望只是正確的語法來獲得這種工作在這種方式,而不是我見過的方式發佈在這裏。 我還沒有做到視圖,但從我看到的,就像填寫一個正常的DropDownList一樣簡單。
Thanks Darin!我沒有得到任何編譯器問題,所以直到明天,當我可以對數據庫進行測試時,我不會明確地知道它是否有效,但它對我來說看起來很完美。我知道這很簡單,但在我不確定如何完成之前沒有遇到過這個具體問題。謝謝你的幫助!!順便說一下,這是您提供的第二個問題的第二個選項,可以滿足我的需求。 LenderProduct.ProgramTypes確實是一個複雜類型的程序類型列表,因此具有IDs方法的ToArray完美無缺! – 2012-03-18 13:45:48