MVC2 Ajax Form выполняет нежелательное обновление страницы

Я новичок в MVC. У меня есть первая форма Ajax:

<div id="test"></div>
<div id="MainChatMenu">
<% using (Ajax.BeginForm("SendMessage", "MainChat", new AjaxOptions {  UpdateTargetId="test"}))
{ %>
  <input id="chatMessageText" type="text" maxlength="200"  />
<input type="submit" value="Go"/>
<% } %>

Теперь, если я нажму кнопку отправки, страница перезагружается, переходя к mysite / controller / action. Я думал, что поведение Ajax.BeginForm по умолчанию было совершенно не так? Где моя ошибка новичка?

Мой контроллер вызывается правильно, но передача данных также не работает. Наверное, из-за той же ошибки? Вот код:

public class MainChatController : Controller
{
    [AcceptVerbs(HttpVerbs.Post)]
    public EmptyResult SendMessage(FormCollection formValues)
    {
        return new EmptyResult();
    }

}

person Sparhawk    schedule 16.06.2010    source источник


Ответы (2)


Убедитесь, что вы включили необходимые библиотеки скриптов:

<script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftAjax.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftMvcAjax.js") %>"></script>
person Darin Dimitrov    schedule 17.06.2010
comment
К сожалению, это действительно вопрос новичка. В том числе скрипты исправили! - person Sparhawk; 17.06.2010

person    schedule
comment
System.Web.Mvc.Ajax.AjaxOptions не содержит определения для HttpMode. Если я возьму HttpMethod (который существует), я получу то же поведение, что и раньше. - person Sparhawk; 16.06.2010
comment
Вы заметили новый {} до появления AjaxOptions? - person Gregoire; 17.06.2010
comment
Нет, не знал. Теперь это: использование (Ajax.BeginForm (SendMessage, MainChat, new {}, new AjaxOptions {UpdateTargetId = test, HttpMethod = POST})) Ваш новый {} должен быть routeValues. Почему это должно иметь значение? У моего действия есть значение атрибута HttpVerbs.Post, и оно выполняется (точка останова достигнута). Так что сообщение вроде в порядке. - person Sparhawk; 17.06.2010
comment
Я использую MVC2. Перегрузка 5/11: actionName, controllerName, ajaxOptions. И это тоже сработало. Извините, вы отправляете меня не в том направлении. - person Sparhawk; 17.06.2010
comment
Извините, я заметил эту перегрузку :( - person Gregoire; 17.06.2010