-->

MVC DropDownList中对于选择的值(MVC DropDownList For Selec

2019-10-24 11:29发布

我试图填充一个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;

}

Answer 1:

保持其代表着你这样的视图模型所选项目的属性。

public class CreateOrderVM
{
  public List<SelectListItem> Modes {set;get;}
  public string SelectedMode {set;get;}

  public CreateOrderVM()
  {
    this.Modes=new List<SelectListItem>();
  }
}

现在,当你渲染视图,加载模式集合,并设置为任何你想要的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")


文章来源: MVC DropDownList For Selected Value