返回 Json 对象不起作用,只返回字符串

本文关键字:返回 字符串 不起作用 Json 对象 | 更新日期: 2023-09-27 18:32:32

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

返回 Json 对象不起作用,只返回字符串

如果你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 方法一次。

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

var userstorynames = userstorylist.Select(x => new { id = x.Id, name = x.Name }).ToList();