MVC: лучший способ для гиперссылки отправить обратно в ActionResult - PullRequest
1 голос
/ 02 июня 2011

Я использую Html.BeginForm, но мне нужна гиперссылка, чтобы инициировать обратную передачу в ActionResult (функциональность, аналогичная LinkButton).Я не думаю, что могу использовать ActionLink, потому что я не направляю представление с тем же именем, что и ActionResult (или я неправильно понял: S).

Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 02 июня 2011

Я думаю, у вас есть два варианта (хотя первый не такой гибкий и может запутаться)

1) стилизовать вашу кнопку отправки как гиперссылку (легко, но вы, вероятно, в конечном итоге будете использовать Html.BeginAjax или что-то подобное)

2) Введите div, ActionLink или какой-либо другой элемент и сериализуйте данные формы при повторной отправке с использованием jQuery

Если вы можете лучше описать возвращаемые данные, мы можем лучше настроить параметры dataType и success ниже.

$(function () {
    $('#myButton').click(function (e) {
        e.preventDefault();
        $.ajax({
            url: '/MyController/MySuperAction',
            type: 'POST',
            data: $('#formId').serialize(),
            dataType: 'json',
            success: function (xhr_data) {
                // in this particular example, you'll
                // parse your JSON returned.
            }
        });
    });
});

Редактировать

Итак, ваш контроллер может выглядеть как

public ActionResult MySuperAction(FormCollection form) {
    // I don't recommend using FormCollection
    // You should stick to the view model pattern

    // process your form
    return Json(new { MyValue = "Textbox value" });
}

И вам нужно изменить вышеуказанную функцию success на что-то вроде

success: function(xhr_data) {
    $('#MyTextBoxID').val(xhr_data.MyValue);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...