MVC и JQuery: лучшие практики для извлечения данных формы - PullRequest
7 голосов
/ 07 октября 2009

У меня есть JQuery, который использует Ajax для отправки информации обратно на мой контроллер для обработки

Я делаю это так:

//Define my controls
<%=Html.TextBox("PName", Model.PName, new { id = "pName" })%> ... 
....
....

//Get the values from my controls
var param1= $("#pName").val();
....
....

    //Define the return URL. Is this how to send info back?
    var url = '<%= Url.Content("~/Port/SaveRowAjax") %>/?ID=' + id
                + "&param1=" + param1
                + "&param2=" + param2
                + "&param3=" + param3
                + "&param4=" + param4
                + "&param5=" + param5;

    $.ajax({
        url: url,
        success: function(html) {
            alert("Success!");
        },
    });

   //My c# code, that processes the request
    public void SaveRowAjax(string param1 ....)
    {
        ...
    }

Это лучший способ сделать это с MVC?
Это кажется немного грязным, когда я создаю URL для отправки обратно на сервер

Ответы [ 4 ]

4 голосов
/ 07 октября 2009

Попробуйте использовать SerializeArray для отправки элементов формы. Все их значения будут упакованы в объект JSON.

var link = "/Port/SaveRowAjax";
var formData = $(":input").serializeArray();
$.post(link,formData);
2 голосов
/ 07 октября 2009

Вы можете попробовать использовать такой синтаксис с jQuery

$.post(link, {param1: param1, param2: param2 });
1 голос
/ 16 ноября 2011

Способ, который работает для меня, таков:

jQuery.ajax({
        url: '@Url.Action("SaveRowAjax", "Port")',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({ param1: param1, param2: param2, param3: param3 }),
        success: function (result) { }
    });
0 голосов
/ 07 октября 2009

Есть несколько способов сделать это. Я предпочитаю метод, изложенный здесь:

http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

Да, он основан на более старой версии MVC, но реальная основа этой техники - использование jQuery (который не изменился).

Одним из ограничений этого метода является то, что он не будет работать с загрузкой файлов, однако есть плагин jQuery для создания сообщений в форме ajax, который поддерживает загрузку файлов (я думаю, через скрытый iframe).

редактирование: Я думаю, что лучшая причина для использования этого метода в том, что если у пользователя отключен JavaScript, форма все равно будет работать.

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