按 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;
我发帖是为了如果有人遇到这个问题,请提供解决方案。
-- 控制器 --
[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;
我发帖是为了如果有人遇到这个问题,请提供解决方案。