如何使用JavaScript格式将@html.dropdownlist名称与mvc中的id绑定

时间:2013-03-08 06:01:27

标签: javascript asp.net-mvc-3 jquery html.dropdownlistfor

我需要使用带有name和id的JavaScript格式在mvc中绑定@html.dropdownlist。我尝试但不在JavaScript端绑定它不传递客户端的值。我的列表值格式图像如下。如何使用name和id传递值而不是序列号

2 个答案:

答案 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个属性:ValueText,您应该将下拉列表绑定到:

$.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);
}

现在您可以将下拉列表绑定到此集合的IdName属性:

$.each(data, function () {
    $('#MyDdl').append(
        $('<option/>', {
            value: this.Id,
            html: this.Name
        })
    );
});