2013-05-21 4 views
5

Я хочу выбрать значение по умолчанию в выпадающем списке, где policyId = 7, но не выбрал это значение, что я делаю неправильно?mvc 4 drop down default value selected

Контроллер:

var pm = new ManagerClass(); 
IEnumerable<myClass> po = pm.GetDataFromDb(); 
IEnumerable<SelectListItem> Policies = new SelectList(po, "PolicyID", "PolicyName", new { PolicyID = 7 }); 
ViewBag.Policies = Policies; 

Вид:

@Html.DropDownListFor(m => m.PolicyID, ViewBag.Policies as IEnumerable<SelectListItem>, new { @class = "dropdown-field"}) 

ответ

7

Просто установите PolicyID свойство на вашей модели представления в значение, которое требуется предварительно выбрать:

var pm = new ManagerClass(); 
var po = pm.GetDataFromDb(); 
ViewBag.Policies = new SelectList(po, "PolicyID", "PolicyName"); 

viewModel.PolicyID = 7; 
return View(viewModel); 

С вашего DropDownList привязана к объекту PolicyID (m => m.PolicyID), то его значение будет использоваться при выборе того, какой элемент должен быть предварительно выбран.

+1

Я пробовал это уже, но не работал. –

+0

На странице редактирования это работает, но на странице добавления она не работает. Я даю id модели, также добавляя страницу, как вы делаете. –

+1

Я не знаю, что редактирует и добавляет страницы, о которых вы говорите. Это всегда срабатывало для меня. Отображение полного примера, позволяющего воспроизвести проблему, было бы полезно для лучшего понимания вашего сценария. –

8

Это потому, что он фактически не выбирает значение в SelectList.

Во-первых, чтобы сделать его лучше, помещаете элементы в вашей модели представления, чтобы предотвратить бросание (это лучше практика тоже):

public class MyModel 
{ 
    public int PolicyID { get; set; } 
    public List<SelectListItem> Policies { get; set; } 
    //rest of your model 
} 

Затем заполнить его:

var model = new MyModel(); 
model.Policies = po 
    .Select(p => new SelectListItem 
    { 
     Text = p.PolicyName, 
     Value = p.PolicyID.ToString(), 
     Selected = p.PolicyID == currentPolicyId //change that to whatever current is 
    }) 
    .ToList(); 

Тогда в ваше мнение, сделайте следующее:

@Html.DropDownListFor(m => m.PolicyID, Model.Policies, new { @class = "dropdown-field"}) 
0

Это для DropDownList:

Контроллер:

Список FieldListItems = новый Список();

FieldListItems.Add (новый SelectListItem {Text = "ID проекта", Value = "Project_ID"});

FieldListItems.Add (новый SelectListItem {Text = "Project Name", Value = "Project_Name"});

ViewBag.SearchByList = новый SelectList (FieldListItems, "Value", "Text", selectedValue: Project_ID);

The View:

Сортировка по: @ Html.DropDownList ("SortOrder", (SelectList) ViewBag.SortingByList)

Вы можете изменить SelectedValue в контроллере элемента, который вы хотите по умолчанию

0

В случае, если у вас есть статическое меню:

1- создать следующий класс:

public static class StaticMenus 
{ 

    public static List<string> GetGridRowsCount() 
    { 
     List<string> result = new List<string>(); 
     result.Add("3"); 
     result.Add("5"); 
     result.Add("10"); 
     result.Add("20"); 
     result.Add("25"); 
     result.Add("50"); 
     result.Add("100"); 

     return result; 
    } 
} 

2 - добавьте следующий код к контроллеру:

ViewData["CountryList"] = new SelectList(StaticMenus.GetGridRowsCount(),"10"); 

3- Добавить код:

@Html.DropDownList("MainGridRowsCount", ViewData["RowsCountList"] as SelectList)