【发布时间】:2011-04-28 08:53:44
【问题描述】:
我遇到了下拉菜单和 viewbag 的问题。我在控制器中使用以下代码设置下拉列表:
applicationGuid = new Guid(form["applicationList"]);
var applications = _applicationRepository.List();
ViewBag.applicationList = new SelectList(applications, "Id", "Name", applicationGuid);
在视图中,这完美地工作并返回先前选择的值(applicationGuid):
@Html.DropDownList("applicationList", "")
现在我想使用以下代码,因为我想向下拉列表中添加一些属性:
@Html.DropDownList("applicationList", ViewBag.applicationList as SelectList, "", new { rel = "0", @class = "required" })
但由于某种原因,选择的值没有被渲染(即使它被传递给视图,我可以看到 selected = "true" 与 ViewBag SelectList 中的正确项目相对应)。
上面的两个例子呈现为(这个有 selected="selected"):
<select id="applicationList" name="applicationList"><option value=""></option><option selected="selected" value="2f666645-9b28-406f-bd9f-9ecc009346a6">app1</option><option value="898cbbb5-5dff-4378-b15a-9ecc00b8242f">app2</option></select>
就这样(选中的已经消失了!!):
<select class="required" id="applicationList" name="applicationList" rel="0"><option value=""></option><option value="2f666645-9b28-406f-bd9f-9ecc009346a6">app1</option><option value="898cbbb5-5dff-4378-b15a-9ecc00b8242f">app2</option></select>
谁能解释我在这里做错了什么以及为什么它会丢失所选值?我发现了许多关于视图数据项的名称如何不能冲突等的帖子,但我已经用随机名称将其剥离了,但似乎没有任何效果!这是 MVC3 中的问题吗?
【问题讨论】:
标签: c# html asp.net-mvc-3