Как получить доступ к значениям Http Post в Action Method при публикации с использованием jQuery - PullRequest
0 голосов
/ 02 февраля 2012

Я просто изучаю asp.net mvc, так как хочу переключиться с Webforms.Я просто экспериментировал, пытаясь опубликовать строку с помощью jQuery и получить эту строку обратно в ответ.Однако я не уверен, как получить доступ к параметру post в методе действия контроллера.

Я пытался использовать FormCollection, но он пуст (что, я думаю, очевидно, так как я публикую сообщения с использованием jQuery ajaxзвонок а не форма)

 $(function () {
        $("#GetReport").click(function () {
            $.ajax({
                type: 'POST',
                url: '/Reports/GetReport',
                data: 'Abracadabra Mercedes',
                contentType: 'application/text;charset=utf-8',
                dataType: 'text',
                success: function (result) {
                    alert(result);
                }


            });
        });
    });

//Controller Code
public class ReportsController : Controller
    {
        //
        [HttpPost]
        public ActionResult GetReport(string query)
        {


            ViewBag.Result = "Hello";

            ViewBag.Geronimo = query;

            return View();

        }

    }

        //View Code
@{
    Layout = null;
}

@ViewBag.Result + @ViewBag.Geronimo

1 Ответ

1 голос
/ 02 февраля 2012

Ваши «данные» должны быть списком ключей / значений, как в URL. Затем вы получите эту информацию, поступающую в параметр запроса вашего метода Action.

например.

$(function () {
    $("#GetReport").click(function () {
        $.ajax({
            type: 'POST',
            url: '/Reports/GetReport',
            data: 'query=Abracadabra Mercedes',
            success: function (result) {
                alert(result);
            }


        });
    });
});

см. http://www.tugberkugurlu.com/archive/working-with-jquery-ajax-api-on-asp-net-mvc-3-0-power-of-json-jquery-and-asp-net-mvc-partial-views для получения дополнительной информации.

В этом примере вы можете видеть, что он делает это. Ищите:

var d = "itemId=" + itemId;

Редактировать: я только что попробовал здесь сейчас

<input type="button" value="Click" id="GetReport" />
<input type="text" id="tester"/>

<h2>Index</h2>
<script type="text/javascript">
$(function () {
    $("#GetReport").click(function (e) {
        var d = "input=" + $('#tester').val();
        debugger;
        $.ajax({
            type: 'POST',
            url: '/Home/test',
            data: d,
            success: function (result) {
                alert(result);
            }

        });

        if (e && e.preventDefault) {
            e.preventDefault();
        }
    });
});

и

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult Test(string input)
    {
        return new ContentResult() { Content = input };
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...