Как отправить форму ASP.NET MVC с использованием JavaScript и все же проверить на стороне клиента? - PullRequest
2 голосов
/ 25 июня 2010

У меня есть форма ASP.NET MVC 2, которая отлично работает, выполняет проверку на стороне клиента (используя аннотации данных). Всякий раз, когда пользователи нажимают кнопку отправки, проверка на стороне клиента запускается до того, как форма фактически отправляется обратно на сервер.

Это реальный код, очень простой материал:

<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm()) { %>
    <%= Html.ValidationSummary(true) %>
    <%: Html.EditorForModel() %>
    <p>
        <input type="submit" value="Save" />
    </p>
<% } %>

Теперь вот моя проблема: я хочу отправить форму, используя кнопку, которая находится не внутри , как в примере выше. Эту кнопку нужно поместить в отдельный

на странице, которая работает как панель инструментов для всех кнопок и действий в моем приложении.

Я могу отправить форму, используя что-то вроде этого (используя jQuery):

<asp:Content ID="Content2" ContentPlaceHolderID="ToolBarContent" runat="server">
    <input type="submit" value="Save" onclick="$('#form0').submit();" />
</asp:Content>

Единственная проблема заключается в том, что это не вызовет проверку на стороне клиента, как если бы пользователь нажимал кнопку обычной отправки. Вся форма отправляется обратно, выполняется проверка на стороне сервера, и снова отображается представление с ошибками проверки.

Я не хочу, чтобы эта обычная кнопка отправки вместе с формой, просто нужно, чтобы она была на панели инструментов, так есть ли способ сделать это? Отдельная кнопка вызывает отправку формы, одновременно вызывая проверку формы на стороне клиента?

Ответы [ 4 ]

2 голосов
/ 25 июня 2010

Попробуйте взломать:

<input type="submit" value="Save" onclick="$('#dummy').click();" />

, где dummy - скрытая кнопка submit внутри вашей формы.

Также кнопка Save не обязательно должна быть кнопкой submit, если она не находится внутри form.

0 голосов
/ 25 июня 2010

Попробуйте $("#yourform").validate("submit");, если вы используете MicrosoftMvcValidation.js или $("#yourform").validate(), если вы используете jquery.validate.js

0 голосов
/ 25 июня 2010

Методы проверки привязаны к событию отправки формы, что означает, что вы должны иметь возможность вызывать form.submit () из javascript, и события отправки все равно должны запускаться.

0 голосов
/ 25 июня 2010

Вы можете попробовать плагин jQuery Ajax Form.

http://jquery.malsup.com/form/

Вы также можете просто прикрепить событие отправки формы через $('#form').submit(function() { })

...