2013-05-08 30 views
2

我正在使用JavaScript来获取MVC 4中的下拉列表的选定值,但有一个问题,我认为是由HTMLHelper引起的。JavaScript选择droplist值不工作在ASP.NET MVC4与HTMLHelper和“所有”

控制器 - 填充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 ""; } 
} 

VIEW

视图有这部分的下拉列表。请注意列入“全部”。我认为这是问题。这将放置在下拉列表的第一行,并用空值表示“全部”。我要那个。到目前为止好(这样的)

@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

这可能有助于查看为前几个选项生成的HTML - 当然,如果您不想提供太多信息,请进行编辑。我看到这个问题可能会出现的一些场景。 – JayC 2013-05-08 22:05:58

+0

我解决了这个问题,不让HTML助手添加“All”,而是从数据源中添加“All”。一种黑客。我的问题是通过解决这个问题没有回答,所以我会离开它,如果有人想复制和解决它。 – Geminirand 2013-05-09 12:44:31

回答

1

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

的前几行

这里“全部”是选项标签。所以你不把它看作价值。