jquery $ .get()回调不处理部分视图

时间:2011-08-16 22:11:49

标签: jquery asp.net-mvc-3

我正在使用jquery发出HttpGet请求,如下所示:

$.get("@Url.Action("PbisForSprint", "SprintBacklog")/" + sprintId, function (result) {
                    oTable.fnOpen(nTr, result, 'details');
                });

oTable.fnOpen是Data Tables脚本中定义的函数,它向我的数据表添加一行。 get请求应返回与所选sprint关联的pbis列表。

我的控制器应返回部分视图,但如果我有该代码,则不显示任何内容。但是,如果我返回一个字符串,则会显示该字符串。例如,以下代码不起作用:

    public ActionResult PbisForSprint(int id)
    {
        //get Sprint
        var sprint = sprintRepository.GetById(id);            
        return View(sprint.Pbis);
    }

但如果我将其更改为

public stringPbisForSprint(int id)
    {
        //get Sprint
        var sprint = sprintRepository.GetById(id);            
        return "This is just test data, I hope I don't need to return html strings";
    }

然后我的页面显示正常。

以下是我要发送的视图:

@model IEnumerable<Pbi>

<table cellpadding="4" cellspacing="0" border="0" style="padding-left:50px;">
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Story Points</th>
        <th>Level of done</th>
    </tr>
@foreach (var item in Model)
{
    <tr>
        <td>@item.Id</td>
        <td>@item.Title</td>
        <td>@item.StoryPoints</td>
        <td>@item.Done</td>
    </tr>
    <tr>
        <td>
            @Html.ActionLink("Create New", "Create")
        </td>
    </tr>
}
</table>

提前感谢任何人能够提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

要尝试的事情:

  • 不要返回视图,返回偏序(我怀疑这是你想要的):

    返回PartialView(sprint.Pbis);

当然,你需要创建一个局部视图,而不是一个完整视图。

  • 在处理AJAX时始终执行增量编码。首先尝试将部分渲染到页面上的DIV。然后,一旦它工作,然后看看增强您的数据表的东西。

我很确定我的第一点是你的问题。您不能在单个页面上嵌套<html>个元素。只能有一个<html>元素。

奖金提示(免费) - 请勿将QS变量添加到网址:

@Url.Action("PbisForSprint", "SprintBacklog")/" + sprintId

使用$.get的第二个参数,即data(GET的查询字符串,POST的表单值):

$.get('@Url.Action("PbisForSprint", "SprintBacklog")', { id: sprintId }, function(result)