2011-10-04 54 views
2

我的Search.cshtml有一個名爲「search-results」的div,它將被更新。 SearchResults是操作名稱。我在MVC2/VS2008項目上做了很多次,但這是我第一次使用MVC3和VS2010。Ajax.BeginForm導致重定向到局部視圖而不是就地

問題是,而不是我的搜索結果呈現在我的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(根),則爲如下:從MicrosoftMvcAjax的第一線

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

如果我在元素的末尾添加MicrosoftMvcAjax.js,我得到一個錯誤sayning命名空間「類型」是未定義的錯誤.js:

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

我在這裏錯過了什麼。我相信我的代碼很好,因爲它從我的MVC2項目幾乎逐字地拷貝過來。

回答

4

你忘了包括jquery.unobtrusive-ajax.js腳本到您的網頁(根據需要調整路徑):

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

至於Microsoft*.js腳本而言,它們已經過時的ASP.NET MVC 3,不應再除非你正在移植一些遺留應用程序,否則將被使用他們已被jQuery取代。

0

好的,想通了我的問題。

我正在調用Ajax.BeginForm和AjaxOption OnSuccess指向一個更新我的佔位符的js函數。但這不是必要的,而且不顯眼。一旦我從Ajax選項中刪除了OnSucces,一切都開始工作。

〜S

相關問題