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>
這可能有助於查看爲前幾個選項生成的HTML - 當然,如果您不想提供太多信息,請進行編輯。我看到這個問題可能會出現的一些場景。 – JayC 2013-05-08 22:05:58
我解決了這個問題,不讓HTML助手添加「All」,而是從數據源中添加「All」。一種黑客。我的問題是通過解決這個問題沒有回答,所以我會離開它,如果有人想複製和解決它。 – Geminirand 2013-05-09 12:44:31