使用数组填充下拉列表

本文关键字:下拉列表 填充 数组 | 更新日期: 2023-09-27 18:34:05

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

我将如何使用它来填充 DD

这是我的用户类:

public class Usuario
{
    public string Nome { get; set; }
    public string Token { get; set; }
    public IEnumerable<SelectListItem> Unidades { get; set; }
}

这是我接收公司并将其发送到视图的地方,我从另一个重定向到此Action Action获取它:

var usuario = TempData["objUsuario"] as UsuarioSSO;
if (usuario == null) return RedirectToAction("Index", "Login");
if (usuario.UsuarioUnidades == null)
{
    ModelState.AddModelError("", "Usuário não possui unidades");
    return View();
}
var model = new Models.Usuario
{
    Unidades = usuario.UsuarioUnidades.ToList().Select(x => new SelectListItem
    {
        Value = x.CodigoEmitente.ToString(),
        Text = x.NomeFantasia
    })
};
return View(model);

这是我尝试显示它的方式:

@Html.DropDownListFor(x => x.Unidades, new SelectList(Model.Unidades))

我已经尝试了所有方法,但它不起作用,我遇到了一些转换错误,当我可以使其工作时,它不会显示内容,它只会显示Text区域内的对象

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; }
}

然后创建下拉列表,如下所示:

@Html.DropDownListFor(x => x.Unidade, Model.Unidades)

您可以直接提供Unidades,因为它已经IEnumerable<SelectListItem>

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

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

public int SelectedUnidades { get; set; }

并且您需要将SelectList分配给视图模型中的另一个属性或ViewBag属性

ViewBag.UnidadesList = new SelectList(usuario.UsuarioUnidades, "CodigoEmitente", "NomeFantasia");

然后在视图中

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