这是我的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>
我的问题是,当我试图保存我的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为空为什么? 这个问题无法解决的原因是什么?
答案 0 :(得分:0)
你应该这样做....
此示例仅用于演示
//Categoria da Materia
public IEnumerable<SelectListItem> ListaCategorias
{
get { return GetCategoria(); }
}