带有Ajax的MVC3 - 返回的数据没有“插入”到正确的位置

时间:2011-11-25 17:44:23

标签: ajax asp.net-mvc-3

我正在尝试在MVC上开始使用Ajax

在我的主视图中,我有以下代码:

@Ajax.ActionLink("Click here to get the data","LoadData",
    new AjaxOptions
    {
      UpdateTargetId = "dataPanel",
      InsertionMode = InsertionMode.InsertAfter,
      HttpMethod="GET"
    })


<div id="dataPanel">
</div> 

我创建了控制器的操作如下:

public PartialViewResult LatestReview()
{
  var myData = GetMyData();
  return PartialView("_PartialData", myData);
}

_PartialData定义如下:

@model MyApp.Models.Data
<div>
@if (Model == null)
{    
    <p>There is no data yet</p>
}
else
{
    <p>
    @Model.Body
    </p>          
}
</div>

但是当我点击链接时,我的数据(在_PartialData中呈现)在浏览器中完全加载,替换了源页面(因此不在dataPanel div中)

当我查看原始页面源代码(在单击ajax链接之前)它看到ajax操作定义如下:

<a data-ajax="true" data-ajax-method="GET" data-ajax-mode="after" data-ajax-update="#dataPanel" href="/Home/LoadData">Click here to get the data</a>

<div id="dataPanel">
</div>

我做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

我怀疑您忘记将jquery不显眼的ajax脚本包含在您的页面中:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

这个脚本能理解ASP.NET MVC 3中的所有Ajax。*帮助程序。如果没有它,它们会生成带有HTML5 data- *属性的标准标记,这些属性由脚本使用。