部分视图未找到正确的位置,并且始终会打开新页面。
我需要在正确的位置(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>
答案 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化元素。