部分 View 未转到正确的位置,并且始终打开一个新页面。
我需要在正确的位置 (index.cshtml) 打开局部 View 。如何解决?
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
在 Shared 文件夹下
@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>
最佳答案
确保您已将 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.*
助手将毫无用处。他们所做的只是在相应的 DOM 元素上生成虚拟的 HTML5 data-*
属性,但如果没有适当的脚本,就绝对没有任何东西可以解释这些属性并对元素进行 AJAX 化。
关于c# - 部分 View 未到达正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156310/