Простой ненавязчивый ajax MVC4 не работает

Я пишу очень простую тестовую страницу MVC4, и ненавязчивый Ajax, похоже, не работает. Когда я нажимаю кнопку "Отправить", страница не отправляется.

У меня точка останова есть VS и могу сказать, что нет запроса.

Я использую Firefox, и когда я нажимаю кнопку отправки, веб-консоль показывает эту ошибку JavaScript:
--- Пустая строка передана getElementById()

Который происходит в строке 16 в.
--- jquery.unobtrusive-ajax.js



Я устанавливаю параметры ajax следующим образом:

AjaxOptions ajaxOpts = new AjaxOptions { UpdateTargetId = "officeList", Confirm = "Are you sure?", Url = Url.Action("GetOfficeData") };

Вот мой AjaxForm:

@using (Ajax.BeginForm("GetOfficeData", ajaxOpts))
{
    <div>
        @Html.DropDownList("orgList", new SelectList(Model.Organizations, "ORGID", "ORGNAME"));

        <button type="submit" id="btnSubmit">Submit</button> 
    </div>
}

Когда я нажимаю кнопку "Отправить", я получаю сообщение "Вы уверены", как определено в параметрах ajax.


Если я изменю Ajax.BeginForm на:

@using (Html.BeginForm())
...

Затем появляется запрос, мои контрольные точки попадают, и там нет ошибок JS.


Я использовал NuGet для получения последней версии jQuery и unobtrusive-ajax. Вот мои теги сценария из исходного представления (все они - по порядку):

<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="/Scripts/DataTables-1.9.4/media/js/jquery.dataTables.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/modernizr-2.5.3.js"></script>




Вот форма, которая отображается:

<form action="/Selectee/GetOfficeData" data-ajax="true" data-ajax-confirm="Are you sure?" data-ajax-mode="replace" data-ajax-update="#officeList" data-ajax-url="/Selectee/GetOfficeData" id="form0" method="post">            
   <div>
      /*--my drop down .....
      <br />
      <button type="submit" id="btnSubmit">Submit</button> 
   </div>
</form>  




Есть идеи?

1 ответ

Решение

У меня это работает.

У меня не было Html.BeginForm(), только Ajax.BeginForm(). Это действительно?

Я добавил Html.BeginForm () с Ajax.BeginForm () и все мои элементы управления внутри этой формы, и он начал работать.

Я думал, что Ajax.BeginForm () заменил Html.BeginForm, но, похоже, мне нужны оба. Это верно?

Другие вопросы по тегам