MVC DropDownList的选定值 [英] MVC DropDownList For Selected Value

查看:90
本文介绍了MVC DropDownList的选定值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to populate the selected value field of an MVC drop down list, but I have been unsuccessful. I am using MVC 5.1.

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

Here is a screenshot of the selected value and the model showing sales receipts:

该模型未选择销售收据,而是默认为估算值:

Instead of sales receipts being selected, the model defaults to estimates:

当我使用ViewData时,下拉列表将成功运行:

When I use ViewData, the drop down works successfully:

Html.DropDownList("JMASettings.InvoiceMode")

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;

}

推荐答案

像这样保留表示视图模型中所选项目的属性.

Keep the property which represents the selected item on your view model like this.

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

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

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

Now when you have to render the view, load the Modes collection and set the SelectedMode to whatever you want

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的选定值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆