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

时间:2012-04-29 15:48:42

标签: c# jquery asp.net-mvc json

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

2 个答案:

答案 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();