Как мне заставить отправку форм Ajax работать в ASP.net MVC?
-
11-09-2019 - |
Вопрос
Я новичок в мире AJAX и Javascript и пытаюсь реализовать Скотт Хансельман пример отправки формы для обновления части страницы.Я скопировал его пример почти слово в слово и, похоже, не могу заставить его работать.Когда я нажимаю кнопку отправки, действие контроллера вызывается успешно, но результат отображается в браузере как новая страница вместо обновления только диапазона, который я указал в форме Ajax.
Вот мой код просмотра:
<asp:Content ID="indexHead" ContentPlaceHolderID="head" runat="server">
<title>Home Page</title>
</asp:Content>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<% using (Ajax.BeginForm("TestAction", new AjaxOptions { UpdateTargetId = "target" }))
{ %>
<%= Html.TextBox("TextBox")%>
<input type="submit" value="Submit" />
<span id="target" />
<% } %>
</asp:Content>
И мое действие контроллера:
public string TestAction(string TextBox)
{
return TextBox;
}
И я включил следующие строки на главную страницу
<script src="../../Scripts/MicrosoftMvcAjax.debug.js"type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
Но все, что он делает, это вызывает действие и отображает результат как новую страницу вместо обновления целевого диапазона.Вот несколько небольших скриншотов, иллюстрирующих происходящее.
Скриншот 1 http://martindoms.com/scr1.JPG
Скриншот 2 http://martindoms.com/scr2.JPG
Есть идеи?
Решение
У вас есть JavaScript, включенный в вашу главную страницу в неправильном порядке.Измените порядок так, чтобы MicrosoftAjax.js был включен первым из трех, и все будет работать.
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
Другие советы
Просто подкидываю идеи...
http://www.asp.net/learn/MVC/tutorial-33-cs.aspx
Ваше действие контроллера находится в классе, определенном так?
public class MyController : Controller
Очевидно, имя класса должно заканчиваться словом контроллер.