C# 发出将值从textbox传递到jquery函数并传递到控制器函数的命令

C# 发出将值从textbox传递到jquery函数并传递到控制器函数的命令,c#,jquery,asp.net-mvc,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

我遇到了一个向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();
}
[HttpPost]
公共异步任务检索顺序(字符串编号)
{
如果(_sapHelper==null)
{
_sapHelper=new Helper();
}
返回视图();
}
我的问题是,如果我在
RetrieveOrder
函数中设置断点,并检查
number
的值,我会得到
null

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

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

试试这个

dataType :'json',
data: {number: data},
试试这个

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

可以在javascript对象中包含该值,并将键与动作的参数名相匹配

这应该行得通

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

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

您可以在javascript对象中拥有该值,并将键与动作的参数名相匹配

这应该行得通

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

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

多亏了Aleksander Matic和Rob Lang解决了这个问题

溶出

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");
            }
        }
    });
}
功能维护(e){

//var data=$('#orderNumber').val()修复了这一问题,多亏了Aleksander Matic和Rob Lang

溶出

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");
            }
        }
    });
}
功能维护(e){

//var data=$('#orderNumber').val();我认为它不知道如何绑定您的号码。我建议将
RetrieveOrder
的方法签名更改为
RetrieveOrder(string orderNumber)
。仍然等于
null
您使用的是.NET的哪个版本?在“OK”函数中,您可以
console.log(data)吗;
并查看该作用域是否有权访问该变量?我认为它不知道如何绑定您的号码。我建议将
RetrieveOrder
的方法签名更改为
RetrieveOrder(string orderNumber)
。仍然等于
null
您使用的是.NET的哪个版本?在“OK”函数中,您可以
console.log(数据)
并查看该作用域是否有权访问该变量?我猜是更接近了。
number
现在等于“”,而不是
null
尝试添加数据类型:“json”,仍然相同。我猜是更接近了。
number
现在等于“”与其添加数据类型:'json',不如尝试添加数据类型:'json',仍然相同。它未完成的代码:-)它最终会做一些事情,只是测试出来。它未完成的代码:-)它最终会做一些事情,只是测试出来。