[英]MVC DropDownList For Selected Value
我正在尝试填充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;
}
像这样在视图模型上保留代表所选项目的属性。
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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.