我正在使用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>
提前感谢任何人能够提供的任何帮助。
答案 0 :(得分:1)
要尝试的事情:
不要返回视图,返回偏序(我怀疑这是你想要的):
返回PartialView(sprint.Pbis);
当然,你需要创建一个局部视图,而不是一个完整视图。
我很确定我的第一点是你的问题。您不能在单个页面上嵌套<html>
个元素。只能有一个<html>
元素。
奖金提示(免费) - 请勿将QS变量添加到网址:
@Url.Action("PbisForSprint", "SprintBacklog")/" + sprintId
使用$.get
的第二个参数,即data
(GET的查询字符串,POST的表单值):
$.get('@Url.Action("PbisForSprint", "SprintBacklog")', { id: sprintId }, function(result)