我正在尝试实现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 {
<div class="bdy_box">
<div id="detailData" class="rep_tb0">
// code to generate the list of data
</div>
</div>
我的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的内容时,我看到的远远超出了我的需要。例如,我看到如下内容:
<div class="rep_tb0" id="detailData">
<title></title>
<meta content="" name="title">
<meta content="" name="description">
<meta content="" name="keywords">
<link type="image/x-icon" href="/Content/Favicons/default.ico" rel="shortcut icon">
<link type="text/css" rel="stylesheet" href="/Content/Stylesheets/Style203.css">
有没有理由告诉我这一切,如何阻止它显示所有这些标题类型的信息?
答案 0 :(得分:1)
梅丽莎,
我假设您有一个名为_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);
}
答案 1 :(得分:0)
您需要确保在设置X-Requested-With
HTTP标头时发出请求。检查使用开发人员工具添加到您的浏览器(在Chrome和IE9中内置,在Firefox中获取Firebug)。您可能希望在不同浏览器下仔细检查您的代码,因为过去使用IsAjaxRequest发生了不同的无法解释的问题(可能取决于浏览器设置)