Ajax.BeginForm用局部视图替换整个页面
问题描述:
我在我简单的ASP.NET MVC应用程序中使用Ajax.BeginForm()
时遇到问题。我搜索了解决方案,但没有发现我似乎有所帮助。Ajax.BeginForm用局部视图替换整个页面
我已经使用默认的Visual Studio 2015模板创建了一个新项目。我已经改变了Index.cshtml
文件:
@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>ASP.NET</h1>
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
<p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
</div>
<div class="row">
<div id="ajax-test"></div>
@using (Ajax.BeginForm("Test", new AjaxOptions()
{
UpdateTargetId = "ajax-test",
InsertionMode = InsertionMode.Replace
}))
{
<input type="submit" />
}
</div>
我添加了一个新的动作,HomeController
:
public ActionResult Test()
{
return PartialView("Test");
}
一个新视图Home\Test.cshtml
:
Hello world
而且,重要的是,我已将所需的JavaScript文件的引用添加到_Layout.cshtml
(将它们移动到页面的顶部不起作用)。
...
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
我已经验证了jqueryval
束在调试模式下呈现为:
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
这些条目中已经存在web.config
文件:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
我希望,当我按提交,div将填入'Hello world'。相反,整个页面被替换为'Hello world',浏览器被重定向到/Home/Test
。开发人员工具中没有报告错误。
难题的缺失是什么?我知道之前在*上已经提出了类似的问题,但通常的答案是包含这些JavaScript文件,这是我所做的。以上是我对模板项目所做的所有更改,因此看不到我可能会分裂的内容。
答
我与它挣扎了几个小时,并设法找到张贴在计算器上后的溶液5分钟。典型。
我不得不安装一个NuGet软件包Microsoft.jQuery.Unobrusive.Ajax
,这个软件包默认没有安装,并且在页面上添加一个对jquery.unobtrusive-ajax.js
的引用。我认为它已被合并到jquery.validate.unobtrusive.js
或其他东西,但没有。
不!为什么这也是我的问题:(4小时。非常感谢您用您的答案更新您的OP! – Eric