0

我正在尝试将 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>"));
            }
        });
4

2 回答 2

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 方法。

于 2012-04-29T15:55:17.687 回答
2

要返回带有 id 和 name 的元组,您可以执行以下操作:

var userstorynames = userstorylist.Select(x => new { id = x.Id, name = x.Name }).ToList();
于 2012-04-29T16:15:47.140 回答