我试图更改现有项目中的代码以使DropDownListFor选择项目。我已经阅读了无数的线程,但我没有得到一个特定的项目来选择;
这就是我得到的;
控制器;
ViewData("MyDropDownList") = new SelectList(_myRepository.GetData, "data_id", "name"})
查看;
@Html.DropDownListFor(Function(m) m.data_id, TryCast(ViewData("MyDropDownList"), SelectList))
这会产生一个很好的列表,看起来像这样;
<select id="someId" name="someName" data-val="true">
<option value="aec385a7-bd77-4b94-9fbb-130487e3e62e">Option1</option>
<option value="5edee514-e6ca-456f-a8fa-71bde67351a1">Option2</option>
<option value="8a293328-8b11-47b7-bc9a-ceddf2e6a355">Option3</option>
</select>
在阅读之后,我非常确定这可以用于选择“Option2”;
ViewData("MyDropDownList") = new SelectList(_myRepository.GetData, "data_id", "name", "5edee514-e6ca-456f-a8fa-71bde67351a1"})
但它没有,我也试过了;
ViewData("MyDropDownList") = new SelectList(_myRepository.GetData, "data_id", "name", New With {Key .id = "5edee514-e6ca-456f-a8fa-71bde67351a1"} })
我做错了什么? VB不是我的一杯茶,所以它可能只是一个语法搞砸了。任何意见都表示赞赏。
答案 0 :(得分:0)
在MVC中,如果视图是强类型的,则选择列表的选定选项将被覆盖,并且构造函数上设置的选定选项属性将永远不会到达视图,并且将选择下拉列表中的第一个选项(为什么还有一点一个谜。)要解决此问题,需要做的就是将视图中的DropDownList以及控制器中ViewData键的名称重命名为模型中设置的名称之外的其他名称,然后所选选项将到达视图。不幸的是,在发布表单时,您必须从FormCollection访问所选选项的值,而不是一个有点烦人的强类型对象。