JavaScript选择droplist值不能在HTML .NET MVC4中使用HTMLHelper和“All”

时间:2013-05-08 18:53:44

标签: javascript c#-4.0 asp.net-mvc-4

我正在使用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>

1 个答案:

答案 0 :(得分:1)

@ Html.DropDownList(“标准”,“全部”)

此处 “所有” 是选项标签。所以你不能把它作为价值。