1

部分视图没有转到正确的位置,并且总是打开一个新页面。

我需要在正确的位置(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);
  }

索引.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>

更新


感谢达林·季米特洛夫

最初我把

 <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>
4

1 回答 1

4

确保您已将jquery.unobtrusive-ajax.js脚本包含到您的页面中。而这个脚本包含显然应该发生在jquery.js. 如果您使用的是 ASP.NET MVC 4 捆绑包,您应该~/bundles/jqueryval在布局中简单地呈现捆绑包,就在 jquery 之后:

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

如果您在 jquery 之后没有将jquery.unobtruisve-ajax.js脚本包含在标记中,那么Ajax.*帮助程序将毫无用处。他们所做的只是data-*在相应的 DOM 元素上生成虚拟的 HTML5 属性,但是如果没有正确的脚本,就绝对没有任何东西可以解释这些属性和 AJAXify 元素。

于 2013-04-22T20:44:18.027 回答