Model view controller 通过使用SelectList的强类型模型,使用DropDownList for(非DropDownList)生成选定属性
我尝试用控制器传递的viewModel填充dropdownlist,主要目标是设置选定的属性标记,以便在下拉列表加载下拉列表中的特定项时选中该项。我正在使用MVC5和Razor 有很多关于DropDownListFor的问题,但不幸的是,我还没有找到我想要的 我已经找到了许多可以使用viewbags的解决方案,但我认为这不是 我要找的是,我想通过 强类型模型。 我要使用的Html帮助程序是@Html.DropDownListFor,而不是@Html.DropDownList。据我所知,用For后置的helper使用linq表达式重载,它们用于处理模型,并且是强类型的,而非后置的For则用于viewbags。 这就是它的样子,默认选择的城市应该是蒙扎 目前,我只使用@Html.DropDownList实现了这个结果,正如前面所说,这不是我的意图,我希望使用@Html.DropDownListFor实现相同的结果。为了便于编制文档,代码如下: 此方法使用@Html.DropDownList 模型 视图模型Model view controller 通过使用SelectList的强类型模型,使用DropDownList for(非DropDownList)生成选定属性,model-view-controller,html.dropdownlistfor,selected,strongly-typed-dataset,selectlist,Model View Controller,Html.dropdownlistfor,Selected,Strongly Typed Dataset,Selectlist,我尝试用控制器传递的viewModel填充dropdownlist,主要目标是设置选定的属性标记,以便在下拉列表加载下拉列表中的特定项时选中该项。我正在使用MVC5和Razor 有很多关于DropDownListFor的问题,但不幸的是,我还没有找到我想要的 我已经找到了许多可以使用viewbags的解决方案,但我认为这不是 我要找的是,我想通过 强类型模型。 我要使用的Html帮助程序是@Html.DropDownListFor,而不是@Html.DropDownList。据我所知,用For后
public class AccountIndexGetVM
{
public UserData userData = new UserData();
public AddressUser addressUser = new AddressUser();
public IEnumerable<SelectListItem> cities { get; set; } //<--Cities to DDL
}
看法
在中创建下拉列表
@using MyProject.ViewModels.Account
@model AccountIndexGetVM
//some code...
<td>@Html.LabelFor(m => m.addressUser.City.Name)</td>
<td>@Html.DropDownList("CityAttributeIDVAlue", Model.cities, "Please Select a City")</td>
HTML源代码结果
<td><select id="CityAttributeIDVAlue" name="CityAttributeIDVAlue"><option value="">Please Select a City</option>
<option value="277">Aosta</option>
<option value="4156">Meda</option>
<option value="4175">Melegnano</option>
<option value="4310">Milano</option>
<option selected="selected" value="4750">Monza</option> <!--Selected is PRESENT-->
</select></td>
此方法使用@Html.DropDownListFor
正如您所看到的,默认选择的ddl项目不是select,而是选择了可选的请选择一个城市。这不是我的意图,加载ddl时应该选择Monza,并且HTML选项标记中应该存在一个选定的属性
我所做的唯一更改是在视图中,这是代码,并使用了DropDownList for helper:
看法
生成的HTML
<td><select id="cities" name="cities"><option value="">Please Select a City</option>
<option value="277">Aosta</option>
<option value="4156">Meda</option>
<option value="4175">Melegnano</option>
<option value="4310">Milano</option>
<option value="4750">Monza</option> <!--No selected attribute present-->
</select></td>
问题:
是否有一种方法可以使用DropDownList for Html helper在Html ddl中生成选定的标记,或者唯一的方法是DropDownList?我不确定Select helpers的区别。我将此列表与视图模型一起传递
List<SelectListItem> citySelectList = new List<SelectListItem>();
cityList = cities.GetAll().OrderBy(x => x.DESCRIPTION).ToList();
foreach (var city in cityList)
{
citySelectList .Add(new SelectListItem()
{
Value = city.ID,
Text = city.Desc,
Selected = true
});
}
<td>@Html.LabelFor(m => m.addressUser.City.Name)</td>
<td>@Html.DropDownListFor(m => m.cities, (IEnumerable<SelectListItem>)Model.cities, "Please Select a City")</td>
<td><select id="cities" name="cities"><option value="">Please Select a City</option>
<option value="277">Aosta</option>
<option value="4156">Meda</option>
<option value="4175">Melegnano</option>
<option value="4310">Milano</option>
<option value="4750">Monza</option> <!--No selected attribute present-->
</select></td>
List<SelectListItem> citySelectList = new List<SelectListItem>();
cityList = cities.GetAll().OrderBy(x => x.DESCRIPTION).ToList();
foreach (var city in cityList)
{
citySelectList .Add(new SelectListItem()
{
Value = city.ID,
Text = city.Desc,
Selected = true
});
}
@Html.DropDownListFor(x => x.City, Model.CitySelectList, "", new { id = "citySelectID" })