0
我有一個看起來像這樣的視圖模型:定義通過控制器和視圖模型選擇列表
public class SomeViewModel
{
public SomeViewModel(IEnumerable<SelectListItem> orderTemplatesListItems)
{
OrderTemplateListItems = orderTemplatesListItems;
}
public IEnumerable<SelectListItem> OrderTemplateListItems { get; set; }
}
然後我有我的控制器的Action
做這個:
public ActionResult Index()
{
var items = _repository.GetTemplates();
var selectList = items.Select(i => new SelectListItem { Text = i.Name, Value = i.Id.ToString() }).ToList();
var viewModel = new SomeViewModel
{
OrderTemplateListItems = selectList
};
return View(viewModel);
}
最後我查看:
@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text"), "Please select an order template")
該代碼工作正常,我的選擇列表奇妙地填充。接下來我要做的就是設置一個Session["orderTemplateId"]
的選定值,當用戶從列表中選擇一個特定選項時,該值將被設置。
現在網上尋找第四個參數應該允許我設置一個選擇的值,所以如果我這樣做後:
@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text", 56), "Please select an order template")
56是我要選擇的項目的ID,但無濟於事。然後我想,爲什麼不在控制器中做?
當我試圖在我的控制器建立我的選擇列表項,然後使物品進入查看最後的努力:
public ActionResult Index()
{
var items = _repository.GetTemplates();
var orderTemplatesList = new List<SelectListItem>();
foreach (var item in items)
{
if (Session["orderTemplateId"] != null)
{
if (item.Id.ToString() == Session["orderTemplateId"].ToString())
{
orderTemplatesList.Add(new SelectListItem { Text = item.Name, Value = item.Id.ToString(), Selected = true });
}
else
{
orderTemplatesList.Add(new SelectListItem { Text = item.Name, Value = item.Id.ToString() });
}
}
else
{
orderTemplatesList.Add(new SelectListItem { Text = item.Name, Value = item.Id.ToString() });
}
}
var viewModel = new SomeViewModel
{
OrderTemplateListItems = orderTemplatesList
};
return View(viewModel);
}
離開,像這樣我的觀點:
@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text"), "Please select an order template")
什麼也沒有!
爲什麼這不適合我?
感謝您的回答。我已經嘗試過,並使用文本字段設置選定的值,但也沒有工作。 –