我正在尝试将json对象列表返回给视图,但是它并不喜欢它的对象,如果我返回一个字符串或一个字符串列表它将会工作。但实际上我不需要视图中的整个对象,我真的只需要名称和ID。如何更改此选项以返回名称列表并将Id匹配到视图,然后将所有名称插入/更新到列表框中?任何帮助表示赞赏。 :)
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetUserStories(int id)
{
var userstorylist = userRepository.Select().Where(x => x.EpicId.Equals(id)).ToList();
var userstorynames = userstorylist.Select(x => x.Name);
return Json(userstorynames, JsonRequestBehavior.AllowGet);
}
查看:
$.getJSON("/Estimate/GetUserStories", $.param({ id: selectedid }, true), function (result) {
$(".UserStoryListBoxClass").html("");
for (var item in result) {
$(".UserStoryListBoxClass").append($("<option>" + result[item] + "</option>"));
}
});
答案 0 :(得分:3)
如果您的json
结果是这样的
[{"Id": "1","Name": "Skeet"},{"Id": "2","Name": "Darin"}]
以下代码可以使用,
$.getJSON("/Estimate/GetUserStories", $.param({ id: selectedid }, true), function (result) {
var items="";
$.each(result, function(index) {
items+="<option value="+result[index].Id+">" + result[index].Name+ "</option>";
});
$(".UserStoryListBoxClass").html(items);
});
工作样本http://jsfiddle.net/CFdeW/14/
永远不要在循环中使用append
方法向下拉列表中添加元素。始终将其存储到变量中并仅调用html方法 。
答案 1 :(得分:2)
要返回带有id和name的元组,你可以这样做:
var userstorynames = userstorylist.Select(x => new { id = x.Id, name = x.Name }).ToList();