2012-01-03 50 views
0

這是我的ViewModel:如何獲取IEnumerable <SelectListItem>中的選定項目?

//Categoria da Materia 
    public IEnumerable<SelectListItem> ListaCategorias { get; set; } 

    //Categoria Matéria que foi selecionada pelo usuário na área pública 
    public string CategoriaMateriaSelecionada { get; set; } 

這是我的控制器:

private IEnumerable<SelectListItem> GetCategoria() 
     { 
      var query = contexto.CategoriaMateria.OrderBy(x => x.Nome).ToList(); 

      var categorias = query.AsEnumerable().Select(x => new SelectListItem 
      { 
       Value = x.Id.ToString(), 
       Text = x.Nome 
      }).ToList(); 

      return categorias; 
     } 

,這是我的看法:

<label class="editor-label"> 
      @Html.LabelFor(model => model.CategoriaMateriaSelecionada) 
     </label> 
     <label class="editor-field"> 
      @Html.DropDownListFor(model => model.CategoriaMateriaSelecionada, Model.ListaCategorias) 
     </label> 

我的問題是,當我'想救我CategoriaMateriaSelecionada喜歡此代碼:

[HttpPost] 
     public ActionResult Novo(NovoViewModel novoViewModel , string imagemCapa) 
     { 

      if (ModelState.IsValid) 
      { 
       Materia noticia = new Materia() 
             { 
              CategoriaMateria = contexto.CategoriaMateria.Find(Convert.ToInt64((novoViewModel.CategoriaMateriaSelecionada))), 
              Titulo = novoViewModel.Titulo, 
              Chamada = novoViewModel.Chamada, 
              Corpo = novoViewModel.Corpo, 
              DataPublicaco = DateTime.Now, 
              Status = novoViewModel.Status, 
              Imagem = contexto.Imagem.Find(Convert.ToInt64(imagemCapa)) 
             }; 

       contexto.Materia.Add(noticia); 
       contexto.SaveChanges(); 
       return RedirectToAction("Index"); 

      } 

      return View(novoViewModel); 
     } 

該程序向我顯示錯誤: 具有'CategoriaMateriaSelecionada'鍵的ViewData項的類型爲'System.String',但必須是'IEnumerable'類型。 在我進入HTTpPOST的那一刻,listaCategoria爲null爲什麼? 爲什麼這個不能工作的問題是什麼?

+0

我不明白,你開始你的ListaCategorias。 – IamStalker 2012-01-03 21:41:57

回答

0

你應該這樣做,像這樣....
這個例子演示僅

//Categoria da Materia 
public IEnumerable<SelectListItem> ListaCategorias 
{ 
    get { return GetCategoria(); } 
} 
相關問題