Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何传递id';在MVC中对服务器的AJAX请求中_Javascript_Ajax_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc 5 - Fatal编程技术网

Javascript 如何传递id';在MVC中对服务器的AJAX请求中

Javascript 如何传递id';在MVC中对服务器的AJAX请求中,javascript,ajax,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-5,Javascript,Ajax,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 5,在MVC中对服务器的AJAX请求中,如何将id列表传递给控制器的操作函数 我接受使用或不使用Html助手 我知道MVC的model binder在处理诸如int、string和bool等简单类型时没有问题 是不是我必须在动作中使用和数组 我不在乎是否必须使用数组或列表,即使字符串Iint或字符串我始终可以转换它们。我只需要把它们放在服务器上。 我的列表ID目前为空 Javascript: var ids= [1,4,5]; // ajax request with ids.. MVC行动: p

在MVC中对服务器的AJAX请求中,如何将id列表传递给控制器的操作函数

我接受使用或不使用Html助手

我知道MVC的model binder在处理诸如
int
string
bool
等简单类型时没有问题

是不是我必须在动作中使用和数组

我不在乎是否必须使用
数组
列表
,即使字符串I
int
字符串
我始终可以转换它们。我只需要把它们放在服务器上。 我的列表ID目前为空

Javascript:

var ids= [1,4,5];
// ajax request with ids..
MVC行动:

public ActionResult ShowComputerPackageBuffer(List<int> ids) // ids are null
{
    // build model ect..
    return PartialView(model);
}
SOLUTIONS://感谢@aherrick评论。我怀念古老的“传统”

试试这个(我已经检查过了):

您必须确保您的
contentType
application/json
,并且您的数据是字符串化的

public ActionResult SaveSomething(int[] requestData) 
//or
public ActionResult SaveSomething(IEnumerable<int> requestData)
java脚本:

var ids = [1,4,5];
var baseUrl: 'localhost/yourwebsite'
$.ajax({
                    url: baseUrl + '/api/Controller/SaveSomething',
                    type: 'POST',
                    data: JSON.stringify(ids),
                    dataType: 'json',
                    contentType: 'application/json',
                    error: function (xhr) {
                        alert('Error: ' + xhr.statusText);
                    },
                    success: function (result) {
                        if (result != undefined) {
                            window.location.href = window.location.href;
                        }
                    },
                    async: false,
                });

使用
traditional
参数并将其设置为
true

$.ajax({
    type: "POST",
    url: "/URL",
    dataType: "json",
    traditional: true,
    data: {}
});

你能展示一下你是如何提出AJAX请求的吗?@OmriAharon肯定有那么一刻使用
传统的
参数。啊,是的,这听起来很有道理!我想这会有很大帮助,我现在就试试。@aherrick Brilliant它很管用。如果你回答,我就接受。我还将为其他人编辑我的解决方案。在这种情况下,为什么使用async:false?没有原因,只是为了在收到响应之前解锁页面,同步请求可能会暂时锁定浏览器。我已经尝试过了,并且服务器上的BufferID(或ID)仍然为空。你的行动签名看起来怎么样?
public ActionResult SaveSomething(int[] requestData) 
//or
public ActionResult SaveSomething(IEnumerable<int> requestData)
[HttpPost]
    [Route( "api/Controller/SaveSomething" )]
    public object SaveTimeSheet( int[] requestData )
    {
        try
        {
            doSomethingWith( requestData );

            return new
            {
                status = "Ok",
                message = "Updated!"
            };
        }
        catch( Exception ex )
        {
            return new
            {
                status = "Error",
                message = ex.Message
            };
        }


}
var ids = [1,4,5];
var baseUrl: 'localhost/yourwebsite'
$.ajax({
                    url: baseUrl + '/api/Controller/SaveSomething',
                    type: 'POST',
                    data: JSON.stringify(ids),
                    dataType: 'json',
                    contentType: 'application/json',
                    error: function (xhr) {
                        alert('Error: ' + xhr.statusText);
                    },
                    success: function (result) {
                        if (result != undefined) {
                            window.location.href = window.location.href;
                        }
                    },
                    async: false,
                });
$.ajax({
    type: "POST",
    url: "/URL",
    dataType: "json",
    traditional: true,
    data: {}
});