我正在使用JavaScript来获取MVC 4中下拉列表的选定值,但我认为这是由HTMLHelper引起的。
CONTROLLER - 填充droplist
private string PopulateStandard(object selectedValue = null)
{
var query = db.Database
.SqlQuery<StandardModel>(
"SELECT * FROM [DBO].[GetStandards] ('" +
User.Identity.Name + "', '" + DateTime.UtcNow + "')")
.ToList();
ViewBag.Standard = new SelectList(query, "Standard", "Standard", selectedValue);
try { return query[0].Standard; }
catch { return ""; }
}
查看
该视图的下拉列表有此部分。请注意包含“全部”。我认为这是问题所在。这会在下拉列表顶部放置第一行,使用空值表示“全部”。我要那个。到目前为止一切都很好(所以是什么)
@Html.DisplayNameFor(m => m.Standard)
@Html.DropDownList("Standard", "All")
JAVASCRIPT
这是一个很长的故事,但我有其他代码要求我使用JavaScript获取下拉列表的值,所以我这样做:
var e = document.getElementById("Standard");
var sStandard = e.options[e.selectedIndex].value;
问题
如果没有选择任何值,那么我应该得到第一行,对于文本为“全部”,对于值为“”。相反,我得到第二行,这是第一行,数据从数据库中填充。
HTML助手是否导致我无法获得第一行?或者我的JavaScript关闭了吗?
编辑 - 在下拉列表中显示ViewSource
这些是渲染列表的前几行
<select id="Standard" name="Standard"><option value="">All</option>
<option value="2S">2S</option>
<option value="Aero">Aero</option>
答案 0 :(得分:1)
@ Html.DropDownList(“标准”,“全部”)
此处 “所有” 是选项标签。所以你不能把它作为价值。