1

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

4

2 回答 2

1

在您的 ajax 请求中将类型更改为 GET,例如

 $.ajax({
 type: 'GET',
 ...

并尝试

$.each(data, function (index, val) {
    $('<option/>',{value:val.Id,text:val.Text}).appendTo("#MyDdl");
 });
于 2013-03-08T06:15:42.167 回答
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
        })
    );
});
于 2013-03-08T06:55:58.167 回答