kam*_*ilk 4 ajax asp.net-mvc razor
我在使用Ajax.BeginForm()简单的ASP.NET MVC应用程序时遇到问题.我搜索过SO以寻求解决方案,但我发现的任何内容似乎都没有帮助.
我使用默认的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>
Run Code Online (Sandbox Code Playgroud)
我添加了一个新动作HomeController:
public ActionResult Test()
{
return PartialView("Test");
}
Run Code Online (Sandbox Code Playgroud)
一个新观点Home\Test.cshtml:
Hello world
Run Code Online (Sandbox Code Playgroud)
而且,至关重要的是,我已经添加了对所需JavaScript文件的引用_Layout.cshtml(将它们移动到页面顶部没有帮助).
...
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我已经jqueryval在调试模式下验证了捆绑渲染:
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
Run Code Online (Sandbox Code Playgroud)
这些条目已存在于web.config文件中:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)
我希望当我按下提交时,div将填充'Hello world'.相反,整个页面将替换为"Hello world",浏览器将重定向到/Home/Test.开发人员工具中未报告错误.
缺少什么元素?我知道之前在StackOverflow上已经提出了类似的问题,但通常的答案是包含这些JavaScript文件,我做了.以上是我对模板项目所做的所有更改,因此我无法看到我可以破坏的内容.
我已经挣扎了几个小时,并在StackOverflow上发布后5分钟找到了解决方案.典型.
我不得不安装一个Microsoft.jQuery.Unobrusive.Ajax默认安装的NuGet包,并添加jquery.unobtrusive-ajax.js对该页面的引用.我认为它已被合并到jquery.validate.unobtrusive.js或者什么但没有.