2012-01-03 15 views
0

これは私のViewModelです:IEnumerable <SelectListItem>で選択した項目を取得するにはどうすればよいですか?

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; 
     } 

そして、これが私の見解です:

//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; } 

これは私のコントローラである

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

i'amは私を保存しようとしたときに私の問題があります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

デモンストレーションのためにそう....
のように、この例でそれを行う必要があります。 – IamStalker

答えて

0

あなたは私はあなたがあなたのListaCategoriasを開始することを確認していないだけで

//Categoria da Materia 
public IEnumerable<SelectListItem> ListaCategorias 
{ 
    get { return GetCategoria(); } 
} 
関連する問題