我有一个表格会以一种方式加载一些部分视图,其中一个部分视图会在屏幕上加载多个下拉列表。
我有一个ViewModel(主体):在主视图中使用
public class CupomFiscalDetalhesViewModel
{
//some properties
public IEnumerable<CupomItensViewModel> CupomItens { get; set; }
}
中间ViewModel:局部视图的视图模型:
public class CupomItensViewModel
{
public IEnumerable<TabelaPrecoViewModel> TabelasPreco { get; set; }
public TabelaPrecoViewModel TabelaPrecoSelecionada { get; set; }
}
TabelaPrecos
保存我想要在DropDownList中显示的值。并且TabelaPrecoSelecionada
将保留所选值。
在Controller中,我习惯将IEnumerable的值放入ViewBag,并使用此ViewBag在HTML中生成下拉列表,如下所示:
ViewBag.TabelaPrecoSelecionada = new SelectList
(
detalhesCupomFiscal.CupomItens.FirstOrDefault().TabelasPreco,
"IdTabela",
"NomeTabela"
);
但是我不知道如何为CupomItensViewModel
的每个选项生成多个下拉列表,而不将每个下拉列表的选定值的id传递给控制器操作(通过参数)。
在Html中,我使用:但是需要更改名称以某种方式获得绑定工作。
@Html.DropDownList("TabelaPrecoSelecionada",(IEnumerable<SelectListItem>)ViewBag.TabelaPrecoSelecionada,
new { @class = "form-control dropdown" })
有没有人有想法如何实现它?
答案 0 :(得分:0)
我没有测试过,但我可能会在你的CupomItensViewModel中创建选择列表
using System.Linq;
public class CupomItensViewModel
{
public IEnumerable<TabelaPrecoViewModel> TabelasPreco { get; set; }
public TabelaPrecoViewModel TabelaPrecoSelecionada { get; set; }
public IEnumerable<SelectListItem> TabelasPrecoSelectList
{
get
{
return TabelasPreco.Select(x => new SelectListItem()
{
Value = x.IdTabela
Text = x.NomeTabela
Selected = TabelaPrecoSelecionada.IdTabela
}
}
}
}
在你的视野中
@foreach(var item in Model.CupomItens)
{
@Html.DropDownList("TabelaPrecoSelecionada", item.TabelasPrecoSelectList, new { @class = "form-control dropdown" })
}
但如果这些下拉列表不会彼此相邻,我会做出
public IEnumerable<CupomItensViewModel> CupomItens { get; set; }
改为列出并使用索引来识别它们。 CupomItens [X]
只是我的2美分而不检查它是否有效。希望它有所帮助。