2015-08-03 5 views
1

Я пытаюсь заполнить выбранное поле значения в раскрывающемся списке MVC, но я не увенчался успехом. Я использую MVC 5.1.MVC DropDownList для выбранного значения

Вот скриншот выбранного значения и модель с указанием продаж поступления:

enter image description here

Вместо поступления от продаж выбран, модель по умолчанию оценок:

enter image description here

Когда я использую 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; 

} 

ответ

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")