2013-05-08 62 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( 「標準」, 「全」)

的前幾行

這裏「全部」是選項標籤。所以你不把它看作價值。