【问题标题】:Ajax.BeginForm replaces whole page with partial viewAjax.BeginForm 用部分视图替换整个页面
【发布时间】:2015-09-27 15:49:57
【问题描述】:

我在简单的 ASP.NET MVC 应用程序中使用 Ajax.BeginForm() 时遇到问题。我已经搜索了 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 &raquo;</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。开发者工具中没有报告错误。

谜题中缺少什么元素?我知道以前在 StackOverflow 上也有人问过类似的问题,但通常的答案是包含这些 JavaScript 文件,我这样做了。以上是我对模板项目所做的所有更改,所以我看不出我会破坏什么。

【问题讨论】:

    标签: ajax asp.net-mvc razor


    【解决方案1】:

    我已经为此苦苦挣扎了几个小时,并在 StackOverflow 上发布后 5 分钟设法找到了解决方案。典型的。

    我必须安装默认不安装的 NuGet 包Microsoft.jQuery.Unobrusive.Ajax,并在页面中添加对jquery.unobtrusive-ajax.js 的引用。我以为它已被合并到 jquery.validate.unobtrusive.js 或其他东西中,但没有。

    【讨论】:

    • 不!为什么这也是我的问题:( 4 小时。非常感谢您用您的答案更新您的 OP!
    猜你喜欢
    • 2014-06-25
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多