当页面加载时,我的下拉菜单没有填充正确的状态。它总是从列表的开始处开始。现在,我只是通过使用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();
}
在DropDownFor的第一个参数是它保持选定值并将其发布到服务器如果需要的对象,同样PARAM将是下拉列表中选定的值。 所以如果你将你的控制器中的addy.State设置为你选择的项目,它应该可以工作。 – Aram
向我们展示您的GetStateList方法。 – milagvoniduak
OK @ MyP3uK,我添加了该功能,但不知道它是否会有所帮助 – MaylorTaylor