Отправить форму через AJAX и вернуть частичное представление - MVC2 - PullRequest
1 голос
/ 18 декабря 2010

Похоже, есть много способов решить эту проблему.

В настоящее время я делаю частичное представление с такой формой:

<div id="container">
    <form id="some-form">
        <input id="some-text" type="text">
        <input id="some-submit" type="submit">
    </form>
</div>

затем я перехватываю отправку с помощью JQuery, делаю пост ajax и заменяю форму другим частичным представлением:

$(function()
{
    $('#some-form').submit(function(){
          $.ajax({
               type: "POST",
               url: "/Controller/Action",
               data: {someVal: $('#some-text').val()},
               dataType: "html",
               success: function (result) {
                   $('#container').html(result);
               },
               error: function (request, status, error) {
                   alert('Oh no!');
               }
         });
    });
});

Контроллер будет выглядеть так:

    [HttpPost]
    public ActionResult SomeAction(string someVal)
    {
        //Do something with text
        return PartialView("SubmitSuccess");
    }

Мой вопрос

Каковы другие способы сделать то же самое и каковы плюсы и минусы по сравнению с тем, что я делаю?

Полезен ли Ajax.Form?

Ответы [ 2 ]

3 голосов
/ 18 декабря 2010

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

<div id="container">
    <% using (Html.BeginForm("action", "controller", FormMethod.Post, 
        new { id = "some-form" })) { %>
        <input id="some-text" type="text">
        <input id="some-submit" type="submit">
    <% } %>
</div>

И затем присоедините плагин к этой форме, чтобы AJAXify его:

$(function() {
    $('#some-form').ajaxForm({
        success: function(result) { 
            $('#container').html(result);
        },
        error: function(request, status, error) {
            alert('Oh no!');
        }
    });
});

Плагин будет автоматическиотправить запрос AJAX к действию, используя глагол, указанный в параметре метода, и сериализовать значения всех полей ввода в запросе.

0 голосов
/ 18 декабря 2010

Что не так с тем, что вы делаете?Я сделал это таким образом, и это работает для меня.Это зависит от того, насколько многократного использования вам нужно сделать процесс;вы можете использовать DIV с классом css, а затем создать плагин или виджет JQuery, если вам нужно многократное использование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...