C# DropDownList用于未填充正确的值

C# DropDownList用于未填充正确的值,c#,asp.net-mvc,html.dropdownlistfor,C#,Asp.net Mvc,Html.dropdownlistfor,加载页面时,我的下拉菜单未填充正确的状态。它总是从列表的开头开始。现在,我正在使用ViewBag传递列表,这可能是问题所在 正如您在视图代码中所看到的,我有一个DropDownList用于使用我的Model.StateList,但我似乎无法让它工作 addy.State格式为stateAbr(例如“CT”、“AL”、“AK”) 我的下拉菜单(当使用(SelectList)ViewBag.StateList方法时)以以下格式生成列表: <option value="AL">Alabam

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

正如您在视图代码中所看到的,我有一个DropDownList用于使用我的Model.StateList,但我似乎无法让它工作

addy.State
格式为stateAbr(例如“CT”、“AL”、“AK”)

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

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

foreach(Model.Address中的变量addy)
{
@LabelFor(model=>addy.City)
//@*@Html.DropDownListFor(model=>addy.State,model.StateList,new{id=“SelectState”,@class=“SelectState”})*@
@Html.DropDownListFor(model=>addy.State,(SelectList)ViewBag.StateList,新的{id=“SelectState”,@class=“SelectState”})
@Html.ValidationMessageFor(model=>addy.State)
}
我不知道这能做什么,但给你

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


            return this.db.Query<State>(query).ToList();
        }
public List GetStateListAll()
{
常量字符串查询=@“选择*
从…起
国家;“;
返回此.db.Query(Query.ToList();
}

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

公共操作结果编辑顺序(int orderId) { var model=repositoryScheduling.Order\u FindById(orderId)


}这是我的答案。我没有意识到
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++;
    }

DropDownFor中的第一个参数是它保留所选值并在需要时将其发布回服务器的对象,并且相同的参数将是下拉列表的所选值。因此,如果您将控制器中的addy.State设置为所选项,它应该可以工作。显示GetStateList方法。OK@MyP3uK,我添加了该函数,但我不确定这是否有用
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();
        }
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);
    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++;
    }