Я не уверен, что не так со следующей настройкой. У меня есть представление, в котором перечислены несколько записей, и с каждой из них связан выпадающий список, чтобы изменить значение этой записи. У меня все это работало без AJAX, но вам пришлось изменить кучу выпадающих меню, а затем нажать кнопку «Отправить». Я хотел изменить его, чтобы он сразу же сохранял выпадающий список.
Мое упрощенное представление (типа IEnumerable (Of MyTable)):
<script src="../../Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>
<% For Each item In Model%>
<% Using Ajax.BeginForm("Update", New AjaxOptions With {.UpdateTargetId = "test"})%>
<%=Html.Hidden("id", item.id)%>
<%=item.name%>:
<%=Html.DropDownList("ActionCode", New SelectList(ViewData("actions"), "Value", "Text", item.ActionCode), New With {.onchange = "this.form.submit();"})%>
<span id="test"></span>
<br/>
<% End Using%>
<% Next%>
Контроллер My Update:
<AcceptVerbs(HttpVerbs.Post)> _
Function Update(ByVal id As Integer, ByVal ActionCode As String) As ActionResult
'Update would happen here
Return Content(id & ": " & ActionCode)
End Function
Я бы хотел, чтобы выпадающее изменение активировало контроллер обновлений, но, вероятно, ничего не возвращало - просто обновите базу данных и позвольте пользователю двигаться дальше. Однако происходит то, что отображается пустая страница со значением Content (т.е. «123: ABC»). Это правильная комбинация идентификатора / кода, поэтому обновление, похоже, запускается корректно, оно просто хочет стереть HTML.
Очевидно, что я почему-то неправильно возвращаюсь для правильной работы AJAX, но этот шаблон, кажется, соответствует примерам, которые я мог найти, поэтому я не уверен, где я ошибаюсь. Любая помощь будет принята с благодарностью.