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