MVC - Ajax.BeginForm не работает - PullRequest
       11

MVC - Ajax.BeginForm не работает

2 голосов
/ 31 марта 2012

Я использую Ajax Form для частичного отображения страницы.
см. ниже код

<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery-1.7.1.min.js") %>"></script>

<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/MicrosoftAjax.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/MicrosoftMvcAjax.js") %>"></script>

<form id="aspnetForm" runat="server" style="height: 100%;">
<% using (Ajax.BeginForm("demo", "demo", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "divToUpdate" }, new { @ID = "AjaxForm" }))
                   {  %>

                    <%= Html.DropDownList("Demo", list, new { @id = "id", @class = "dropdown" })%>
                    <% }%>
                    <input type="submit" value="Save" />
                    <div id="divToUpdate">
                        <% Html.RenderPartial("UserControls/DemoPage"); %>
                    </div>

                <% }%></form>

В этом я включаю 4 JS. У меня есть страница с тэгом Form, и внутри у меня есть страница prtial view. когда я выбираю выпадающий список и нажимаю кнопку «Сохранить», я хочу сообщение ajax, но я обнаружил, что вся страница перезагружается.

Есть идеи по этому поводу?

Спасибо

1 Ответ

5 голосов
/ 31 марта 2012

Проблема в том,

  1. Вы не можете иметь вложенные теги формы в html

Попробуйте, как показано ниже,

<% using (Ajax.BeginForm("demo", "demo", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "divToUpdate" }, new { @ID = "AjaxForm" }))
{  %>
    <%= Html.DropDownList("Demo", list, new { @id = "id", @class = "dropdown" })%>
    <input type="submit" value="Save" />
<% }%>
<div id="divToUpdate">
    <% Html.RenderPartial("UserControls/DemoPage"); %>
</div>

Вы также можете изменить dropвплоть до автоматической обратной передачи, тогда вам не понадобится отдельная кнопка отправки,

<%= Html.DropDownList("Demo", list, new { @id = "id", @class = "dropdown", @onchange = "$(this).closest('form').submit();" })%>
...