带有ajax的MVC3局部视图仅返回JSON

时间:2012-02-12 01:25:36

标签: ajax asp.net-mvc telerik-mvc

我是网络编程的新手,我正在学习MVC,ajax,jQuery等,而且我正在使用telerik的一些控件。

我被困在一个特定的地方。

我有一个局部视图,其唯一目的是显示telerik网格中上传文件的列表。当我第一次加载页面时,它呈现得很好。我是这样做的:

@Html.Partial("~/Views/Document/Lista.cshtml", Model.Files)

但是,在完成ajax文件上传后,我想用ajax调用更新具有该局部视图的特定div:

$("#List").load("/Document/List/", { id: fk });

我倾向于使用POST调用,因为telerik网格需要一些json格式的数据,并且json与GET不兼容。

现在这是我的控制器动作:

[GridAction][HttpPost]
public ActionResult List(int id)
{
    Document doc = db.Documents.Where(d => d.ID == id).Single();
    return PartialView("~/Views/Document/List.cshtml", new GridModel(doc.Files));
}

现在,这将导致json ONLY。再次,当我第一次渲染它时,每一个都没问题,所以视图不应该是罪魁祸首。我正在看fiddler中的响应,它看起来像这样:

{"data":[{"ID_File":54,"FK_Document":2,"FileName":"ckeditor_3.6.2.zip","FileType":"application/zip","FileData":null,"FileSize":2294443,"UploadingUser":null},{"ID_File":63,"FK_Document":2,"FileName":"254371_DropDownInGrid-CL.zip","FileType":"application/zip","FileData":null,"FileSize":1708740,"UploadingUser":"S-1-5-21-3024387492-927407738-3508986423-513"}],"total":14}

就像这样,没有任何HTML。

我尝试在我的动作方法中使用各种选项,比如将返回类型更改为JSON,或者返回整个视图而不是部分但我总是得到相同的结果:裸JSON。

我用谷歌搜索了,但无处找不到类似的问题......

所以,我问你的帮助。

1 个答案:

答案 0 :(得分:1)

您可能需要考虑刷新telerik网格而不处理json内容。 看到: http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-grid-client-api-and-events.html#rebind