按 JSON 填充 DropDownList

Populate DropDownList by JSON

-- 控制器 --

[WebMethod]
public ActionResult GetSellers()
{
    List<Seller> sellers = db.Sellers.ToList();

    return Json(sellers, JsonRequestBehavior.AllowGet);
}

-- 查看--

@Html.DropDownListFor(x => x.SellerId, new SelectList(Enumerable.Empty<SelectListItem>()))

--Javascript--

<script type="text/javascript">
    $('#DeptId').change(function () { // DeptId is my another DropDownList
        $.getJSON('/SaleRecords/GetSellers'), null, function (result) { // My path
            var ddl = $('#SellerId'); // My seller DDL
            ddl.empty();
            $('Sellers').show(); // My div (it's display: none)
            $(result).each(function () {
                ddl.append(
                $('<option />', {
                    value: this.Id
                }).html(this.Name)
                );
            });
        };
    });
</script>

怎么了?我在Controller中调试过,sellersList有3个registry,但是在我的View中没有出现,请问是什么问题?

这可能是问题所在

$.getJSON('/SaleRecords/GetSellers'), null, function (result) // should throw an error

尝试

$.getJSON('/SaleRecords/GetSellers')
.done(function(result) {
        var ddl = $('#SellerId');
        ddl.empty();
        $('Sellers').show();
        $(result).each(function () {
            ddl.append(
            $('<option />', {
                value: this.Id
            }).html(this.Name)
 });
 .fail(function(jqXHR) {console.log(jqXHR.responseText)});

刚刚发现错误:我在我的控制器方法中添加了它:

myContext.Configuration.ProxyCreationEnabled = false;

我发帖是为了如果有人遇到这个问题,请提供解决方案。