DropDownList不填充正确的值

时间:2014-04-22 20:42:02

标签: c# asp.net-mvc html.dropdownlistfor

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

正如您在View代码中看到的,我有一个使用我的Model.StateList的下拉列表,但我似乎无法使用它。

addy.State的格式为StateAbbr(例如" CT"," AL"," AK")

和我的下拉菜单(使用(SelectList) ViewBag.StateList方法时会生成以下格式的列表:

<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();
        }

2 个答案:

答案 0 :(得分:0)

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

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

}

答案 1 :(得分: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++;
    }
相关问题