我有以下代码:
@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包含一些基于我从第一个下拉列表中选择的字符串。
前:
当我将其发送到我的操作时,它读为整数(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>
答案 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);
}
});
}