Ajax.BeginForm导致重定向到局部视图,而不是原位视图

本文关键字:视图 局部 BeginForm 重定向 Ajax | 更新日期: 2023-09-27 18:10:29

我的搜索。CSHTML有一个要更新的名为"search-results"的div。SearchResults是操作名称。我已经在MVC2/VS2008项目上做过很多次了,但这是我第一次使用MVC3和VS2010。

问题是,而不是我的搜索结果呈现在我的div,它点击提交是重定向我显示我的部分作为一个独立的页面。

我了解到这可能是因为没有启用Ajax。我的_Layout。CSHTML看起来像这样:

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <script src="@Url.Content("~/Scripts/2011.2.712/jquery-1.5.1.min.js")"  type="text/javascript"></script>
    <link href="@Url.Content("~/Content/themes/base/jquery.ui.core.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/themes/base/jquery.ui.datepicker.css")" rel="stylesheet"  type="text/css" />
    <link href="@Url.Content("~/Content/themes/base/jquery.ui.theme.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/main.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/2011.2.712/jquery-1.5.1.min.js")" type="text/javascript"></script>
    @(Html.Telerik().StyleSheetRegistrar().DefaultGroup(group => group.Add("telerik.common.css").Add("telerik.transparent.css").Combined(true).Compress(true))) 
</head>
<body>
    <div class="page">
        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
            @(Html.Telerik().Menu()
                    .Name("menu")
                    .Items(menu => {
                        menu.Add().Text("Home").Action("Index", "Home");
                        menu.Add().Text("About").Action("About", "Home");
                        menu.Add().Text("Employees").Action("List", "Employee");
                    }))
        </div>
        <div id="main">
            @RenderBody()
            <div id="footer">
            </div>
        </div>
    </div>
    @(Html.Telerik().ScriptRegistrar().DefaultGroup(group => group.Combined(true).Compress(true)))</body>
</html>

我需要添加MicrosoftMvcAjax.js或jquery. unobtrusively -ajax.js吗?我的网络。配置(根)包含以下内容:

  <appSettings>
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
  </appSettings>

如果我在元素的末尾添加MicrosoftMvcAjax.js,我得到一个错误,说名称空间'Type'是未定义的错误从MicrosoftMvcAjax.js的第一行:

    Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_AjaxOptions=function(){return {};}

我在这里错过了什么?我确信我的代码是好的,因为它几乎是逐字复制从我的MVC2项目。

Ajax.BeginForm导致重定向到局部视图,而不是原位视图

您忘记将jquery.unobtrusive-ajax.js脚本包含到您的页面中(根据需要调整路径):

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

Microsoft*.js脚本而言,它们在ASP中已经过时了。NET MVC 3,不应该再使用,除非你正在移植一些遗留的应用程序。

好了,我知道我的问题了。

我正在调用Ajax。BeginForm与ajaxoptiononsuccess指向一个js函数更新我的占位符。但这是不需要的,与不显眼。一旦我从Ajax选项中删除了OnSucces,一切就开始工作了。

~ S