我正在尝试在我的Html.DropDownListFor中设置“所选的项目”
我的控制器看起来是这样的:
HttpCookie cookie = Request.Cookies["MyCookie"];
if (cookie != null)
{
model.cookieValues = new cookieValues();
model.cookieValues.formSelected = cookie.Values.Get("FormSelected");
}
model.formGroups = new List<SIMSClient.FormGroup>();
model.formGroups = SIMSClient.ClientFunctions.GetFormGroups(GlobalVariables.networkstuff, GlobalVariables.testAuth);在我看来,我有一个工作的DropDownListFor:
@Html.DropDownListFor(x => x.formGroups, Model.formGroups.Select(d => new SelectListItem { Text = d.Description, Value = d.ID}), new { @id = "ddlFormGroups", @class = "form-control" })但我无法确定如何将选定的值设置为model.cookieValues.formSelected
请问我怎么做?
发布于 2015-03-12 12:00:26
属性formGroups是复杂对象(List<SIMSClient.FormGroup>)的集合-不能将下拉列表绑定到集合( <select>绑定并回发单个值)。您的模型需要一个要绑定的属性,例如
public int SelectedID { get; set; } // assumes the ID property of FormGroup is int然后在视野中
@Html.DropDownListFor(x => x.SelectedID, Model.formGroups.Select(d => new SelectListItem ....)如果SelectedID的值与FormGroup的一个ID值相匹配,那么该选项将在页面首次呈现时在视图中被选中。回发时,SelectedID的值将是所选选项的值。
发布于 2015-03-12 11:46:12
在进行到SelectListItem的映射时,必须将属性Selected设置为true。
假设model.cookieValues.formSelected保留组的ID,则可以测试数组中的任何项是否符合条件model.cookieValues.formSelected == group.ID。
@{
groups = Model.formGroups.Select(d =>
new SelectListItem
{
Text = d.Description,
Value = d.ID,
Selected = (model.cookieValues.formSelected == d.ID)
});
}
@Html.DropDownListFor(x => x.GroupId , groups, new { @id = "ddlFormGroups", @class = "form-control" })请注意,在您的DropDownListFor上有x => x.formGroups,这是错误的,因为它是组的列表。您需要有一个属性,其中选择的Id(值)要绑定。
例如,有一个名为GroupId的属性,您可以将其设置为string (因为SelectListItem属性Value是字符串),并根据需要在服务器上转换它。
https://stackoverflow.com/questions/29008724
复制相似问题