使用数组填充下拉列表
本文关键字:下拉列表 填充 数组 | 更新日期: 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
的单数,因为我不会说你的语言,不管它是什么。我建议在源代码中始终使用英语。
模型需要一个值类型属性来绑定所选选项。如果CodigoEmitente
是int
类型,则模型属性需要
public int SelectedUnidades { get; set; }
并且您需要将SelectList
分配给视图模型中的另一个属性或ViewBag
属性
ViewBag.UnidadesList = new SelectList(usuario.UsuarioUnidades, "CodigoEmitente", "NomeFantasia");
然后在视图中
@Html.DropDownListFor(x => x.SelectedUnidades, (SelectList)ViewBag.UnidadesList)