无法在ASP.NET MVC的DropDownList中检索选定的值?

时间:2019-05-20 11:38:41

标签: javascript jquery loops drop-down-menu webgrid

尝试在ASP.NET MVC中检索我的DropDownList的选定值。我正在使用以下代码:

HTML

 grid.Column("Other", header: "Other", format: @<text>@Html.DropDownList("OtherKey", (IEnumerable<SelectListItem>)ViewBag.OtherKeysList, new { @class = "extra-class" })</text>)))

结果如下:

enter image description here

尝试使用以下代码检索我的DropDownList的选定值(在本例中为:otherkey3,otherkey2,otherkey1):

 <script type="text/javascript">

       var dict = [];

       $('#btnSubmit').click(function (e) {
           $('#tableID  > tbody  > tr >  td').each(function () {
               $('#OtherKey > option').each(function () {
                   console.log(($(this).val()));
               });
           });
       });

   </script>

但是这不起作用,我得到以下输出:

enter image description here

有人看到我在做什么错吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这里有两个问题。首先,您将获得每个<option>的值,因此它将始终返回所有选择的选项,否则将被选择。在.val()本身上使用<select>来获取当前选择的值:

console.log($('#OtherKey').val());

但是,这似乎还表明您正在HTML中重新使用OtherKey ID。看一看服务器端代码生成的实际HTML。如果ID不是唯一的,则使用这些ID的JavaScript代码的行为是不确定的。

您的元素似乎确实在使用class,因此您可以改用它。 (如果这些元素不是唯一的,则可以为其分配一个额外的类。)类似这样的东西:

$('.extra-class').each(function () {
    console.log(($(this).val()));
});

还要注意,您不需要遍历表行通过<select>元素,只需后者就可以了。除非您出于其他未在此处显示的其他原因而特别需要标识表行。