2013-10-25 46 views
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") 

什麼也沒有!

爲什麼這不適合我?

回答

0

你說「56是我要選擇的項目的ID,但無濟於事」

如果您所指的第四個參數是一個字符串,而不是一個整數,比如:

@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text", "56"), "Please select an order template") 
+0

感謝您的回答。我已經嘗試過,並使用文本字段設置選定的值,但也沒有工作。 –

相關問題