发出从textbox到jquery函数的值传递到控制器函数

时间:2016-09-27 14:07:31

标签: c# jquery asp.net-mvc

我遇到了将值传递给jQuery的问题,我希望从文本框中传递值。

以下是.cshtml

@Html.TextBoxFor(m => m.OrderNumber, new { @class = "form-control", id = "orderNumber" })

我的剧本:

function maintenance_tapped(e) {
    var data = $('#orderNumber').val();

    $("#SapPopUp")
        .dialog({
            width: 600,
            height: 420,
            model: true,
            buttons: {
                "OK": function() {
                    $.ajax({
                        url: '@Url.Action("RetrieveOrder", "Home")',
                        data: data,
                        type: "POST"
                    }).done(function() {
                        $(this).dialog("close");
                    });
                },
                "Cancel": function() {
                    $(this).dialog("close");
                }
            }
        });
}

我的控制器中的代码:

[HttpPost]
public async Task<ActionResult> RetrieveOrder(string number)
{
    if (_sapHelper == null)
    {
        _sapHelper = new Helper();
    }

    return View();
}

我的问题是,如果我在RetrieveOrder函数中放置一个断点,并检查number的值,我会null

然后,如果进入Chrome->inspect element->Console并输入$('#orderNumber').val(),我会将输入的值输入文本框。

它似乎也没有将值传递给函数。

3 个答案:

答案 0 :(得分:0)

试试这个

dataType :'json',
data: {number: data},

答案 1 :(得分:0)

您可以在javascript对象中获取该值,并将该键与您操作的参数名称匹配。

这应该有用。

$.ajax({
    url: '@Url.Action("RetrieveOrder", "Home")',
    data: {
        number: $('#orderNumber').val()
    },
    type: "POST"
}).done(function() {
    $(this).dialog("close");
});

另外,我看到你正在从action方法返回一个viewresult,但是在你的ajax方法调用的done / success事件处理程序中没有使用它。这样做有什么意义?

答案 2 :(得分:0)

感谢Aleksander Matic和Rob Lang。

Soloution

function maintenance_tapped(e) {
//var data = $('#orderNumber').val(); <------- Remove from here

$("#SapPopUp")
    .dialog({
        width: 600,
        height: 420,
        model: true,
        buttons: {
            "OK": function() {
                var data = $('#orderNumber').val(); //<--------- Place here
                $.ajax({
                    url: '@Url.Action("RetrieveOrder", "Home")',
                    data: data,
                    type: "POST",
                    dataType :'json',      //<-------- Added
                    data: {number: data},  //<-------- Added
                }).done(function() {
                    $(this).dialog("close");
                });
            },
            "Cancel": function() {
                $(this).dialog("close");
            }
        }
    });
}