实现Ajax以在MVC3中返回HTML.Partial页面时出现问题

我正在尝试实现Ajax方式来更新我的数据网格。 到目前为止,我在控制器中编写了以下代码:

public ActionResult Detail(string ac, string me) { vm.AdminDetails = _link.Detail(ac + me).ToList(); if (Request.IsAjaxRequest()) return PartialView(vm); return View(vm); } 

我对视图的快照如下所示:

 @model ViewModels.Shared.BaseViewModel @{ Layout = "~/Areas/Administration/Views/Menus/_Layout.cshtml"; } @section content { 
// code to generate the list of data

我的javascript快照如下所示:

 function reload(entity, pk) { $.ajax({ url: "/Administration/" + entity + "s/Detail", data: { pk: pk }, dataType: 'html', cache: false, success: function (responseText) { $('#detailData').html(responseText); } }); }; 

数据确实返回但是我的问题是其他数据也被返回。 当我查看detailData div的内容时,我看到的远远超出了我的需要。 例如,我看到如下内容:

 

有没有理由告诉我这一切,如何阻止它显示所有这些标题类型的信息?

梅丽莎,

我假设你有一个名为_detail.cshtml (如果不是,你需要创建一个)?

我相信您实际上可能正在根据您的示例调用“完整”视图detail.cshtml。 我建议您按照以下方式调用您的操作:

 public ActionResult Detail(string ac, string me) { vm.AdminDetails = _link.Detail(ac + me).ToList(); if (Request.IsAjaxRequest()) return PartialView("_details", vm); return View(vm); } 

您需要确保您的请求是使用X-Requested-With HTTP Header设置的。 检查使用开发者工具插件到您的浏览器(在Chrome和IE9中内置,在Firefox中获取Firebug)。 您可能希望在不同的浏览器下仔细检查您的代码,因为过去使用IsAjaxRequest发生了不同的无法解释的问题(可能取决于浏览器设置)