部分视图没有到达正确的位置

时间:2013-04-22 20:40:41

标签: c# asp.net-mvc-4

部分视图未找到正确的位置,并且始终会打开新页面。

我需要在正确的位置(index.cshtml)打开部分视图。如何解决?

public class HomeController : Controller
{ 
  public PartialViewResult LatestNews()
  {
     var p = new Person();
     p.FirstName = " NAME " + DateTime.Now; // To test only
     return PartialView("_News", p);
  }

Index.cshtml

@Ajax.ActionLink("Click here!", "LatestNews", "Home", 
   new AjaxOptions { UpdateTargetId = "latestNewsDiv", InsertionMode = InsertionMode.Replace, HttpMethod = "GET", LoadingElementId = "progress" })

<div id="latestNewsDiv">
</div>

<div id="progress">
    <p>Loading...</p>
</div>

_News.cshtml位于共享文件夹

@model MvcApplication1.Models.Person
<h2>News !!!</h2>
<div>
    @Model.FirstName
</div>

更新


感谢Darin Dimitrov

最初我把

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

HEAD部分

但是当我将它放在body标记的底部并且在@Scripts.Render("~/bundles/jquery")之后它正常工作时!

  @Scripts.Render("~/bundles/jquery")
        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
         @RenderSection("scripts", required: false)
    </body>
</html>

1 个答案:

答案 0 :(得分:4)

确保已将jquery.unobtrusive-ajax.js脚本包含在您的网页中。这个脚本包含显然应该在jquery.js之后发生。如果您使用的是ASP.NET MVC 4软件包,则只​​需在jquery之后在Layout中呈现~/bundles/jqueryval软件包:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)

如果在jquery之后没有标记中包含jquery.unobtruisve-ajax.js脚本,那么Ajax.*帮助程序就没用了。他们所做的就是在相应的DOM元素上生成虚拟的HTML5 data-*属性,但如果没有正确的脚本,则无需解释这些属性和AJAX化元素。