【问题标题】:asp.net mvc multiple dropdrownlistasp.net mvc 多个下拉列表
【发布时间】:2016-11-12 02:43:08
【问题描述】:

我有一个动态加载一些局部视图的表单,其中一个局部视图将在屏幕中加载多个下拉列表。

我有一个 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" })

有没有人知道如何完成它?

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    我尚未对此进行测试,但我可能会在您的 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 美分,没有检查它是否有效。希望对您有所帮助。

    【讨论】:

    • 嘿@Tek,感谢您的回答,伙计,正如我之前所说,我有很多下拉列表,我正在尝试将此属性实现为 SelectListItem 的 IEnumerable,但 Selected 需要一个布尔值和你完成它的方式是通过 IdTabela
    • 我的 VIew 正在使用 For 循环:@for (int i = 0; i 下拉菜单应该有类似的方式来输入它的名字“CupomItens[@i].SomethingHere”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    相关资源
    最近更新 更多