【问题标题】:MVC DropDownList For Selected Value选定值的 MVC 下拉列表
【发布时间】:2015-08-03 19:53:54
【问题描述】:

我正在尝试填充 MVC 下拉列表的选定值字段,但没有成功。我正在使用 MVC 5.1。

这是所选值和显示销售收据的模型的屏幕截图:

模型默认为估计值,而不是选择销售收据:

当我使用 ViewData 时,下拉菜单成功:

Html.DropDownList("JMASettings.InvoiceMode")

这是我的代码:

public void GetInvoiceMode(JMASettings model)
{
    Dictionary<string, string> modes = new Dictionary<string, string>();
    modes.Add("Estimates", "Estimates");
    modes.Add("Invoices Only (Payments If Paid)", "Invoices");
    modes.Add("Invoices No Payments", "InvoicesNoPayments");
    modes.Add("Sales Receipts", "Sales Receipts");

    if (Session["dataSource"] != null && Session["dataSource"].ToString() == "QBD")
        modes.Add("Sales Orders", "Sales Orders");

    IList<SelectListItem> ilSelectList = new List<SelectListItem>();

    foreach (KeyValuePair<string, string> mode in modes)
    {
        SelectListItem selectListItem = new SelectListItem();
        selectListItem.Text = mode.Key;
        selectListItem.Value = mode.Value;

        if (model.InvoiceMode == mode.Value)
            selectListItem.Selected = true;
        else if (String.IsNullOrEmpty(model.InvoiceMode) && mode.Key == "Sales Receipts")
            selectListItem.Selected = true;

        ilSelectList.Add(selectListItem);
    }


    ViewData["JMASettings.InvoiceMode"] = ilSelectList;

}

【问题讨论】:

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


    【解决方案1】:

    像这样在视图模型上保留代表所选项目的属性。

    public class CreateOrderVM
    {
      public List<SelectListItem> Modes {set;get;}
      public string SelectedMode {set;get;}
    
      public CreateOrderVM()
      {
        this.Modes=new List<SelectListItem>();
      }
    }
    

    现在,当您必须渲染视图时,加载 Modes 集合并将 SelectedMode 设置为您想要的任何内容

    public ActionResult Show()
    {
      var vm=new CreateOrderVM();
      vm.Modes = GetModes();
    
      //Set one of them as selected
      vm.SelectedMode="B";
    
      return View(vm);
    }
    private List<SelectListItem> GetModes()
    {
      var list=new List<SelectListItem>();
      //hard coded for demo.Replace with actual values
    
      list.Add(new SelectListItem { Value="A", Text="A"});
      list.Add(new SelectListItem { Value="B", Text="B"});
      list.Add(new SelectListItem { Value="C", Text="C"});
      return list;
    }
    

    在你看来,

    @model YourNamespace.CreateOrderVM
    
    @Html.DropdownListFor(s=>s.SelectedMode,Model.Modes,"Select")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      相关资源
      最近更新 更多