将dropdownlist的值作为字符串ASP.NET MVC获取

时间:2017-10-27 07:24:06

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我有以下代码:

@Html.DropDownList("jenisBarang", new SelectList(ViewBag.listJenis), "Pilih Perangkat/Layanan", new { @class = "form-control", @id = "ddlJenis", @onchange = "GetMerk(this.value);", @name="jenisBarang" })
@Html.DropDownList("merkBarang", new SelectList("pilih Merk"), "Pilih Merk", new { @class = "form-control", @id = "ddlMerk", @name = "jenisBarang" })


第二个Dropdownlist包含一些基于我从第一个下拉列表中选择的字符串。
前:

  • 一个
  • B'/ LI>
  • C

当我将其发送到我的操作时,它读为整数(0)。
如何将下拉列表的值作为字符串获取? (我选择了一个)

编辑: 这是操纵第二个下拉列表的代码:

<script language="javascript" type="text/javascript">
    function GetMerk(_jenis) {
        var procemessage = "<option value='0'> Please wait...</option>";
        $("#ddlMerk").html(procemessage).show();
        var url = "/Barang/GetMerkByJenis/";

        $.ajax({
            url: url,
            data: { jenisID: _jenis },
            cache: false,
            type: "POST",
            success: function (data) {
                var markup = "<option value='0'>Select Merk</option>";
                for (var x = 0; x < data.length; x++) {

                    markup += "<option value=" + x + ">" + data[x]+ "</option>";
                }
                $("#ddlMerk").html(markup).show();
            },
            error: function (reponse) {
                alert("error : " + reponse);
            }
        });

    }
</script>

3 个答案:

答案 0 :(得分:1)

在你的JS代码中,在循环中,你绑定到select option的值迭代变量 - x,这是数字,所以它将整数传递给控制器。如果您想传递文字,则应绑定到value data[x] 而不是 x

. . .
for (var x = 0; x < data.length; x++) {
    markup += "<option value=" +  data[x] + ">" + data[x]+ "</option>";
}
. . .

答案 1 :(得分:1)

您正在向服务器发布一个整数。因此,您的控制器收到第二个下拉列表的整数值,让我们来看看您的代码

var markup = "<option value='0'>Select Merk</option>";
                for (var x = 0; x < data.length; x++) {

                    markup += "<option value=" + x + ">" + data[x]+ "</option>";
                }

如果你想获得文本,它应该看起来像

var markup = "<option value=''>Select Merk</option>";
                for (var x = 0; x < data.length; x++) {

                    markup += "<option value=" + data[x] + ">" + data[x]+ "</option>";
                }

答案 2 :(得分:0)

如果您想在操作方法中获取下拉文字,那么您的javascript就会出现问题 请使用以下内容替换您的代码

<script language="javascript" type="text/javascript">
function GetMerk(_jenis) {
    var procemessage = "<option value='0'> Please wait...</option>";
    $("#ddlMerk").html(procemessage).show();
    var url = "/Home/GetMerkByJenis/";

    $.ajax({
        url: url,
        data: { jenisID: _jenis },
        cache: false,
        type: "POST",
        success: function (data) {
            var markup = "<option value='0'>Select Merk</option>";
            for (var x = 0; x < data.length; x++) {

                markup += "<option value=" + data[x] + ">" + data[x] + "</option>";
            }
            $("#ddlMerk").html(markup).show();
        },
        error: function (reponse) {
            alert("error : " + reponse);
        }
    });

}