Это моя ViewModel:
//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>
Моя проблема в том, что когда я пытаюсь сохранить My CategoryMateriaSelecionada, как в этом коде:
[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);
}
Программа покажет мне ошибку:
Элемент ViewData, имеющий ключ «CategoryMateriaSelecionada», имеет тип «System.String», но должен иметь тип «IEnumerable».
в тот момент, когда я вхожу в HTTpPOST, listaCategoria не имеет значения, почему?
В чем проблема, почему это не может работать?