我正在使用 JavaScript 来获取 MVC 4 中下拉列表的选定值,但我认为有一个问题是由 HTMLHelper 引起的。
CONTROLLER - 填充下拉列表
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 ""; }
}
看法
该视图具有下拉列表的此部分。请注意包含“全部”。我认为这是问题所在。这会将第一行放在下拉列表顶部,显示“All”,值为空。我要那个。目前为止很好,那又如何)
@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>