【发布时间】:2016-11-13 19:55:50
【问题描述】:
我正在尝试在下拉列表中列出我的客户,但出现此错误:
具有键“cliente”的 ViewData 项属于“System.Int32”类型,但必须属于“IEnumerable”类型。
我在 3 个不同的控制器上有相同的代码,其中两个可以正常工作。
控制器:
public ActionResult Create([Bind(Include = "id,osmanual,empresa,funcionario,cliente,requisitante,recepcionar,motorista,smsr,smsu,smsm,emailenviado,status,observacaostatus,diahora,todosrecepcionar,requisitantenome,requisitantecelular,requisitanteenviarsms,requisitanteenviaremail,departamento,ramal,pgtoccusto,faturadocc,cartaoautorizada,cartaoautorizadaerro,cartaodatadebito,recepcionarnome,recepcionarenviarsms,recepcionarenviaremail,local,transladopara,origem,linhaaerea,nvoo,celular,email,motoristaenviarsms,kmtranslado,kmtransladopreco,tempoespera,tempoesperapreco,estacionamento,pedagio,estacionamentopedagiopreco,nomecartao,numero,codigo,validade,valor,datacadastro,dataeditado")] ordensservicos ordensservicos)
{
if (ModelState.IsValid)
{
ViewBag.Clientes = new SelectList(db.clientes.Where(x => x.excluido == 0).OrderBy(x => x.nomefantasia).Select(x => x.id,), "id", "nomefantasia", 0);
db.ordensservicos.Add(ordensservicos);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(ordensservicos);
}
然后在 HTML 中:
<div class="form-group" style="width: 450px">
@Html.Label("Cliente ")
@Html.DropDownListFor(model => model.cliente, (SelectList)ViewBag.Clientes, "Selecione", new { @class = "form-control", @style = "width: 450px" })
@Html.ValidationMessageFor(model => model.cliente, "", new { @class = "text-danger" })
</div>
我只是在这里阅读了几十个主题,没有成功。
【问题讨论】:
-
因为
ModelState无效并且您返回视图,但您没有重新分配ViewBag.Clientes(您只有在ModelState有效时才这样做,这是没有意义的)
标签: c# html asp.net-mvc razor