我需要使用从SOAP服务器获取的一些数据来填充下拉列表。服务器为我提供了一系列公司。
我如何使用它来填充DD?
这是我的用户类:
public class Usuario
{
public string Nome { get; set; }
public string Token { get; set; }
public IEnumerable<SelectListItem> Unidades { get; set; }
}
以下是我收到公司并将其发送到视图的地方,我从另一个重定向到此Action
的{{1}}获取该信息:
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);
我已经尝试了所有的东西,但它没有工作,我得到一些转换错误,当我能使它工作时它不会显示内容,它只会显示{{内部的对象1}}区域
@Html.DropDownListFor(x => x.Unidades, new SelectList(Model.Unidades))
答案 0 :(得分:4)
您需要为所选项目和可用项目列表提供一个属性,例如:
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>
。
P.S。:我猜到Unidades
的单数,因为我不会说你的语言,不管它是什么。我建议总是在源代码中使用英语。
答案 1 :(得分:4)
您的模型需要值类型属性才能将所选选项绑定到。如果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)