DropDownList 值和文本
DropDownList value and text
我正在使用 jquery 填充 ASP.NET MVC 中的下拉列表
$(function () {
$.getJSON('/GetFoo', function (result) {
var ddl = $('#foo');
ddl.empty();
$(result).each(function () {
$(document.createElement('option'))
.attr('value', this.Id)
.text(this.Text)
.appendTo(ddl);
});
});
});
这是 return JSON 在该过程中使用的控制器操作:
public ActionResult GetFoo()
{
ViewBag.IdTable = new SelectList(db.Table, "IdTable", "Description");
return Json(ViewBag.IdTable, JsonRequestBehavior.AllowGet);
}
下面是我的下拉列表进入视图的方式:
@Html.DropDownListFor(model => model.IdTable,Enumerable.Empty<SelectListItem>(), "-- Loading Values --", new { id = "foo" })
为了进一步说明我在做什么,我想在 select 列表选项中显示描述而不是 IdTable。
在我验证下拉列表选择之前一切正常。事实上,它给出了以下错误:
The value [Choice] is not valid for IdTable.
所以我猜 select 列表选项的值设置为描述字段,而不是 ID 字段。
我该如何解决?
试试这个:
public ActionResult GetFoo()
{
return Json(db.Table.Select(x=> new { Id = x.IdTable, Text = x.Description}),
JsonRequestBehavior.AllowGet);
}
或者在你的JS里改
.attr('value', this.Id)
至
.attr('value', this.Value)
我正在使用 jquery 填充 ASP.NET MVC 中的下拉列表
$(function () {
$.getJSON('/GetFoo', function (result) {
var ddl = $('#foo');
ddl.empty();
$(result).each(function () {
$(document.createElement('option'))
.attr('value', this.Id)
.text(this.Text)
.appendTo(ddl);
});
});
});
这是 return JSON 在该过程中使用的控制器操作:
public ActionResult GetFoo()
{
ViewBag.IdTable = new SelectList(db.Table, "IdTable", "Description");
return Json(ViewBag.IdTable, JsonRequestBehavior.AllowGet);
}
下面是我的下拉列表进入视图的方式:
@Html.DropDownListFor(model => model.IdTable,Enumerable.Empty<SelectListItem>(), "-- Loading Values --", new { id = "foo" })
为了进一步说明我在做什么,我想在 select 列表选项中显示描述而不是 IdTable。
在我验证下拉列表选择之前一切正常。事实上,它给出了以下错误:
The value [Choice] is not valid for IdTable.
所以我猜 select 列表选项的值设置为描述字段,而不是 ID 字段。
我该如何解决?
试试这个:
public ActionResult GetFoo()
{
return Json(db.Table.Select(x=> new { Id = x.IdTable, Text = x.Description}),
JsonRequestBehavior.AllowGet);
}
或者在你的JS里改
.attr('value', this.Id)
至
.attr('value', this.Value)