c# - Ajax.BeginForm 导致重定向到部分 View 而不是就地 View

标签 c# ajax asp.net-mvc forms razor

我的 Search.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.unobtrusive-ajax.js 吗?我的 web.config(根)包含以下内容:

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

如果我在元素末尾添加 MicrosoftMvcAjax.js,则会收到一条错误消息,指出 MicrosoftMvcAjax.js 第一行的命名空间“类型”未定义错误:

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

我在这里缺少什么。我确信我的代码没问题,因为它几乎是从我的 MVC2 项目中逐字复制的。

最佳答案

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

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

Microsoft*.js 脚本而言,它们在 ASP.NET MVC 3 中已过时,不应再使用,除非您要移植某些旧应用程序。它们已被 jQuery 取代。

关于c# - Ajax.BeginForm 导致重定向到部分 View 而不是就地 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651591/

相关文章:

javascript - 将 JSONP 提交到 PHP

c# - MVC 提交按钮未触发

jquery - 使用 jqGrid 用户数据

c# - 如何在 C# MVC Web 应用程序中进行定期事件?

c# - 浏览 FindContours 方法找到的轮廓层次结构?

c# - 类似搜索时出错

c# - SlimDX DirectInput 初始化

PHP 锁定不起作用。不明白为什么

javascript - 为什么在我的 ajax 请求中我的 requestPayload 是空的

C# Sort 和 OrderBy 比较