私は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でこれをすべて簡単に行うことができることを知っています。他の場所でもこれを行っていますが、これが有効にならない理由で、これを動作させることができれば、最も簡単に理解できるソリューションです。
ウーフー!できます!壮大!ありがとうございました! –
Microsoft * - デフォルトのMVCテンプレートにはjquery.unobtrusive-ajaxへの参照が含まれていないため、おそらく@ Html.Ajaxが必要です。また、参考までに、縮小版を参照することもできます – kingdango