我试过这是RC1,然后升级到RC2,但没有解决问题.
// in my controller
ViewData["UserId"] = new SelectList(
users,
"UserId",
"DisplayName",
selectedUserId.Value); // this has a value
Run Code Online (Sandbox Code Playgroud)
result:在对象上设置SelectedValue属性
// in my view
<%=Html.DropDownList("UserId", (SelectList)ViewData["UserId"])%>
Run Code Online (Sandbox Code Playgroud)
结果:所有预期选项都呈现给客户端,但未设置所选属性.SelectedValue中的项目存在于列表中,但列表中的第一项始终默认为选中.
我该怎么做?
更新 感谢John Feminella的回复,我发现了问题所在."UserId"是我的视图强类型化的模型中的属性.当Html.DropDownList("UserId"更改为除"UserId"之外的任何其他名称)时,将正确呈现所选值.
这导致值不受模型约束.
在我的控制器中,我有以下内容:
ViewData["myList"] =
new SelectList(itemRepository.GetAll(), "Id", "Name", currentItem.Id);
Run Code Online (Sandbox Code Playgroud)
在我看来,我有:
<%= Html.DropDownList("myItem", (SelectList)ViewData["myList"])%>
Run Code Online (Sandbox Code Playgroud)
渲染的下拉列表应该具有预先选择的id为currentItem.Id的项目,但它没有.没有选择任何内容,因此它默认为第一个.
这在我更新到RC/RC(刷新)之前有效.有任何想法吗?
有没有办法,我可以在页面加载或发布到服务器时预先选择一个项目..
这就是我现在所拥有的......
<%=Html.DropDownList("dllMonths",
new SelectList(new List<string>() {
"", "January", "Feburary", "March", "April", "June",
"July", "August", "September", "October", "November",
"December"}),
new { onchange="this.form.submit();" })%>
Run Code Online (Sandbox Code Playgroud)