2012-01-06 8 views
2

私はajax呼び出し(MVC Ajaxサポートを使用)を試み、返された部分ビューをページのdivに挿入するビューを持っています。私が言うことができる限り、私がやっていることは非常にバイブックです。しかし、Ajaxコールと更新されたdivの代わりに、私は完全なポストバックを得ています。ここで部分ビューのAjax:完全なポストバックの取得

は、ビューの関連チャンクです:

<fieldset> 
<legend>Available Instructors</legend> 

<p> 
    @{ using (Ajax.BeginForm("InstructorSearch", "CourseSection", new AjaxOptions() { UpdateTargetId = "divSearchResult" })) 
     { 

     @Html.Raw(" Search: ") 
     <select id="SearchType" name="SearchType"> 
      <option value="Last" @((ViewBag.SearchType == "Last") ? " selected" : "")>Last Name</option> 
      <option value="First" @((ViewBag.SearchType == "First") ? " selected" : "")>First Name</option> 
     </select> 
     @Html.Raw(" ") 
     <input type="text" id="SearchText" name="SearchText" value="@(ViewBag.SearchText)" /> 
     @Html.Raw(" ") 
     <input type="submit" id="Search" name="Search" value="Search" /> 
     } 
    } 
</p> 

<div id="divSearchResult"></div> 
</fieldset> 

はここで、コントローラのメソッドです:

[HttpPost]  
public PartialViewResult InstructorSearch(string searchType, string searchText) 
{ 
    var list = Services.InstructorService.ListInstructors(
     base.CurrentOrganizationId.Value, 
     (searchType == "First") ? searchText : null, 
     (searchType == "Last") ? searchText : null, 
     0, 
     Properties.Settings.Default.InstructorListPageSize 
     ); 
    return PartialView(list); 
} 

私がチェックしました、と私はMicrosoftAjax.jsとMicrosoftMvcAjax.jsをロードしています。

だから私は困惑しています。私はjQueryでこれをすべて簡単に行うことができることを知っています。他の場所でもこれを行っていますが、これが有効にならない理由で、これを動作させることができれば、最も簡単に理解できるソリューションです。

答えて

4

私はMicrosoftAjax.jsとMicrosoftMvcAjax.jsを確認しました。

これらのスクリプトは、ASP.NET MVC 3では廃止されています。これらのスクリプトは、サイトから完全に削除できます。彼らは役に立たない。あなたが明示的にあなたのweb.configファイルで控えめなAJAXを無効にする必要があり、その場合には、以前のバージョンからアップグレードされた場合、彼らは後方互換性のためだけに含まれています:

<!-- Remark: don't do this => only for demonstration purposes --> 
<add key="UnobtrusiveJavaScriptEnabled" value="false"/> 

ASP.NET MVC 3では、Ajax.*ヘルパーは、デフォルトではjQueryを使用しています。そのため、Ajax.*ヘルパーの働きを助けるのは、jquery.unobtrusive-ajax.jsです。

+0

ウーフー!できます!壮大!ありがとうございました! –

+0

Microsoft * - デフォルトのMVCテンプレートにはjquery.unobtrusive-ajaxへの参照が含まれていないため、おそらく@ Html.Ajaxが必要です。また、参考までに、縮小版を参照することもできます – kingdango

関連する問題