У меня есть представление, в котором я пытаюсь выполнить вызов ajax (используя поддержку MVC Ajax) и вставить возвращенное частичное представление в div
на странице. Насколько я могу судить, то, что я делаю, очень просто. Но вместо вызова Ajax и обновленного div
я получаю полный постбэк.
Вот соответствующий фрагмент вида:
<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 довольно легко, и я сделал это в другом месте, но это ситуация, когда по причинам, не стоящим упомянуть, если это можно было бы заставить работать, это было бы самым простым, самым чистым, самое простое для понимания решение.