C# MVC中的DropDownListFor错误
我试图在下拉列表中列出我的客户,但我遇到了以下错误: 具有键“cliente”的ViewData项的类型为“System.Int32”,但其类型必须为“IEnumerable” 我在3个不同的控制器上有相同的代码,在其中两个控制器上,它可以工作 控制器:C# MVC中的DropDownListFor错误,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我试图在下拉列表中列出我的客户,但我遇到了以下错误: 具有键“cliente”的ViewData项的类型为“System.Int32”,但其类型必须为“IEnumerable” 我在3个不同的控制器上有相同的代码,在其中两个控制器上,它可以工作 控制器: public ActionResult Create([Bind(Include = "id,osmanual,empresa,funcionario,cliente,requisitante,recepcionar,motorista,sm
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中:
@Html.Label(“客户”)
@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”})
从实际返回IEnumerable
的操作方法原因中的LINQ查询中删除选择部分select(x=>x.id,)
。可能是
ViewBag.Clientes = new SelectList(db.clientes
.Where(x => x.excluido == 0)
.OrderBy(x => x.nomefantasia), "id", "nomefantasia", 0);
从实际返回
IEnumerable
的操作方法原因中的LINQ查询中删除select部分select(x=>x.id,)
。可能是
ViewBag.Clientes = new SelectList(db.clientes
.Where(x => x.excluido == 0)
.OrderBy(x => x.nomefantasia), "id", "nomefantasia", 0);
对于调试,您希望将它们拆分为一行并设置断点 将select语句设置为
select(x=>x)
进行测试
var items = db.clientes.Where(x => x.excluido == 0).OrderBy(x => x)
.Select(x => x).ToList();
var clientes = new SelectList(items, "id", "nomefantasia", 0);
ViewBag.Clientes = clientes;
对于调试,您希望将它们拆分为一行并设置断点 将select语句设置为
select(x=>x)
进行测试
var items = db.clientes.Where(x => x.excluido == 0).OrderBy(x => x)
.Select(x => x).ToList();
var clientes = new SelectList(items, "id", "nomefantasia", 0);
ViewBag.Clientes = clientes;
引发相同错误:System.InvalidOperationException:具有键“cliente”的ViewData项的类型为“System.Int32”,但必须为“IEnumerable”类型。第213行:Html.DropDownListFor(model=>model.cliente,(SelectList)ViewBag.Clientes,“Selecione”,new{class=“form control”,style=“width:450px”})@leonardo'Amato,这很奇怪。请参阅引发相同错误的文章:System.InvalidOperationException:具有键“cliente”的ViewData项的类型为“System.Int32”,但必须为“IEnumerable”类型。第213行:Html.DropDownListFor(model=>model.cliente,(SelectList)ViewBag.Clientes,“Selecione”,new{class=“form control”,style=“width:450px”})@leonardo'Amato,这很奇怪。看到这篇文章你可能也想看。你可能也想看。因为
ModelState
无效,你返回了视图,但你没有重新分配ViewBag。客户(你只在ModelState
有效时才这样做,这是毫无意义的),因为ModelState
无效,你返回了视图,但是您没有重新分配ViewBag.clients
(您只在ModelState
有效时才这样做,这是毫无意义的)