Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC中的DropDownListFor错误_C#_Html_Asp.net Mvc_Razor - Fatal编程技术网

C# MVC中的DropDownListFor错误

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

我试图在下拉列表中列出我的客户,但我遇到了以下错误:

具有键“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中:


@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
有效时才这样做,这是毫无意义的)