C# 使用数组填充下拉列表

C# 使用数组填充下拉列表,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我需要用从SOAP服务器获得的一些数据填充下拉列表。服务器为我提供了一系列公司 我将如何使用它来填充DD 这是我的用户类: public class Usuario { public string Nome { get; set; } public string Token { get; set; } public IEnumerable<SelectListItem> Unidades { get; set; } } 以下是我试图展示它的方式: @Html

我需要用从SOAP服务器获得的一些数据填充下拉列表。服务器为我提供了一系列公司

我将如何使用它来填充DD

这是我的用户类:

public class Usuario
{
    public string Nome { get; set; }
    public string Token { get; set; }
    public IEnumerable<SelectListItem> Unidades { get; set; }
}
以下是我试图展示它的方式:

@Html.DropDownListFor(x => x.Unidades, new SelectList(Model.Unidades))
我已经尝试了所有方法,但都不起作用,我遇到一些转换错误,当我可以使它起作用时,它不会显示内容,它只会在
文本
区域内显示对象

System.Web.Mvc.SelectListItem

所选项目和可用项目列表需要有一个属性,例如:

public class Usuario
{
    public string Nome { get; set; }
    public string Token { get; set; }
    public string Unidade { get; set; }
    public IEnumerable<SelectListItem> Unidades { get; set; }
}
您可以直接提供
Unidades
,因为它已经是
IEnumerable


注:我猜到了大学的单数,因为我不会说你的语言,不管它是什么。我建议在源代码中始终使用英语。

您的模型需要一个值类型属性来绑定所选选项。如果
codigomemitente
int
的类型,则您的模型属性需要

public int SelectedUnidades { get; set; }
您需要将
SelectList
分配给视图模型中的另一个属性或
ViewBag
属性

ViewBag.UnidadesList = new SelectList(usuario.UsuarioUnidades, "CodigoEmitente", "NomeFantasia");
然后在视图中

@Html.DropDownListFor(x => x.SelectedUnidades, (SelectList)ViewBag.UnidadesList)

我无法从您的描述中真正理解什么“不起作用”,但我看到的主要问题是,您是否没有为所选值在模型上设置属性。一旦你有了,语法就是
@Html.DropDownListFor(x=>x.SelectedUnidadeId,新的SelectList(Model.Unidades))
谢谢,伙计,工作得很好!关于语言的事情,我很抱歉,顺便说一下,你猜对了。只有一个问题,这个DD在一个表单中,该表单将被发布到我的操作中,但我得到一个无效的ModelState。您得到的确切错误是什么(更新您的问题)?
ViewBag.UnidadesList = new SelectList(usuario.UsuarioUnidades, "CodigoEmitente", "NomeFantasia");
@Html.DropDownListFor(x => x.SelectedUnidades, (SelectList)ViewBag.UnidadesList)