2014-04-22 64 views
0

当页面加载时,我的下拉菜单没有填充正确的状态。它总是从列表的开始处开始。现在,我只是通过使用ViewBag来传递列表,这可能是问题所在。DropDownListFor不填充正确的值

正如你可以在视图代码中看到的,我有一个使用我的Model.StateList的dropdownlist,但我似乎无法得到它的工作。

addy.State被格式化为StateAbbr

和我的下拉菜单(使用(SelectList) ViewBag.StateList方法时,使此格式的信息列表(例如 “CT”, “AL”, “AK”。):

<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的第一个参数是它保持选定值并将其发布到服务器如果需要的对象,同样PARAM将是下拉列表中选定的值。 所以如果你将你的控制器中的addy.State设置为你选择的项目,它应该可以工作。 – Aram

+0

向我们展示您的GetStateList方法。 – milagvoniduak

+0

OK @ MyP3uK,我添加了该功能,但不知道它是否会有所帮助 – MaylorTaylor

回答

0

您需要设置您创建的SelectList对象的SelectedValue值。

public ActionResult EditOrder(int orderId) {model} 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++; 
    }