2

我正在使用 JavaScript 来获取 MVC 4 中下拉列表的选定值,但我认为有一个问题是由 HTMLHelper 引起的。

CONTROLLER - 填充下拉列表

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 ""; }
}

看法

该视图具有下拉列表的此部分。请注意包含“全部”。我认为这是问题所在。这会将第一行放在下拉列表顶部,显示“All”,值为空。我要那个。目前为止很好,那又如何)

@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>
4

1 回答 1

1

@Html.DropDownList("标准", "全部")

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

于 2013-05-14T14:03:25.087 回答