我需要使用带有name和id的JavaScript格式在mvc中绑定@html.dropdownlist。我尝试但不在JavaScript端绑定它不传递客户端的值。我的列表值格式图像如下。如何使用name和id传递值而不是序列号
答案 0 :(得分:1)
在ajax请求中将类型更改为GET,如
$.ajax({
type: 'GET',
...
并尝试
$.each(data, function (index, val) {
$('<option/>',{value:val.Id,text:val.Text}).appendTo("#MyDdl");
});
答案 1 :(得分:0)
您正在向客户端发送SelectList。此类实现IEnumerable<SelectListItem>
,SelectListItem有2个属性:Value
和Text
,您应该将下拉列表绑定到:
$.ajax({
type: 'POST',
url: url,
data: { id : id },
success: function (data) {
$('#MyDdl').empty();
$.each(data, function () {
$('#MyDdl').append(
$('<option/>', {
value: this.Value,
html: this.Text
})
);
});
}
});
在您的示例中,您使用的是val.Id
,但没有此类属性。
但事实上你不需要任何SelectList。只需退回学生收藏:
[HttpPost]
public ActionResult Some(string id)
{
var students = service.GetAllStudents().ToList();
students.Insert(0, new StudentModel{ Id = 0, Name = "Select student" });
return Json(students);
}
现在您可以将下拉列表绑定到此集合的Id
和Name
属性:
$.each(data, function () {
$('#MyDdl').append(
$('<option/>', {
value: this.Id,
html: this.Name
})
);
});