2014-04-22 3 views
0

В раскрывающемся меню не отображается правильное состояние при загрузке страницы. Он всегда начинается в начале списка. Прямо сейчас, я просто передаю список с помощью ViewBag, который может быть проблемой.DropDownListFor не заполняет правильное значение

Как вы можете видеть в коде просмотра, у меня есть dropdownlist для использования моего Model.StateList, но я не могу заставить его работать.

addy.State отформатирован как The StateAbbr

и мое выпадающее меню (при использовании метода (SelectList) ViewBag.StateList делает список в этом формате (исключая "СТ", "AL", "АК".):

<option value="AL">Alabama</option> 
<option value="AR">Arkansas</option> 

Модель

public class EditOrderViewModel 
    { 
     public List<State> StateList { get; set; } 
    } 

контроллер

public ActionResult EditOrder(int orderId) 
{ 
var model = repositoryScheduling.Order_FindById(orderId); 

var stateList = GetStateList(); 
ViewBag.StateList = new SelectList(stateList, "StateAbbr", "StateNamne"); 

model.StateList = GetStateList(); 
return View(model); 
} 

Посмотреть

foreach(var addy in Model.Address) 
{ 
         <div class="form-group-CityState"> 
          <div class="input-group" style="border-right: 0px"> 
           <span class="input-group-addon CitySpanAddon" style="text-align: left; border-right: 0px">@Html.LabelFor(model => addy.City)</span> 
           // @*@Html.DropDownListFor(model => addy.State, Model.StateList, new {id = "SelectState", @class = "SelectState"})*@ 
           @Html.DropDownListFor(model => addy.State, (SelectList)ViewBag.StateList, new { id = "SelectState", @class = "SelectState" }) 
           @Html.ValidationMessageFor(model => addy.State) 
          </div> 
         </div> 
} 

Не уверен, что это будет делать, но здесь вы идете

public List<State> GetStateListAll() 
     { 
      const string query = @"SELECT * 
         FROM 
          states;"; 


      return this.db.Query<State>(query).ToList(); 
     } 
+0

Первые пары в DropDownFor является объектом, который он держит выбранное значение и сообщения обратно на сервер, если это необходим, и то же пары будут выбранное значение раскрывающегося списка. , поэтому, если вы установите свой addy.State в своем контроллере, чтобы быть выбранным вами элементом, он должен работать. – Aram

+0

Покажите нам свой метод GetStateList. – milagvoniduak

+0

OK @ MyP3uK, я добавляю функцию, но не уверен, что это поможет – MaylorTaylor

ответ

0

Вам нужно установить значение SelectedValue вашего объекта SelectList, который вы создаете.

общественного ActionResult EditOrder (интермедиат OrderId) { вар модель = repositoryScheduling.Order_FindById (OrderId);

var stateList = GetStateList(); 
var selectStateList = new SelectList(stateList, "StateAbbr", "StateNamne"); 
selecteStateList.SelectedValue = model.State // your state id... whatever is in your model. 
ViewBag.StateList = selectStateList; 
return View(model); 

}

0

Это был мой ответ. Я не понимаю, что SelectList() имел переменную selectedValue

int i = 0; 
    foreach (var addy in model.Address) 
    { 
     var countyList = GetCountyList(addy.State); 
     string CountyListCount = "CountyList" + i; 
     string StateListCount = "StateList" + i; 
     ViewData[CountyListCount] = new SelectList(countyList, null, "CountyName",addy.County); 
     ViewData[StateListCount] = new SelectList(stateList, "StateAbbr", "StateName", addy.State); 
     i++; 
    } 
Смежные вопросы