Javascript 如何传递id';在MVC中对服务器的AJAX请求中
在MVC中对服务器的AJAX请求中,如何将id列表传递给控制器的操作函数 我接受使用或不使用Html助手 我知道MVC的model binder在处理诸如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
int
、string
和bool
等简单类型时没有问题
是不是我必须在动作中使用和数组
我不在乎是否必须使用数组
或列表
,即使字符串Iint
或字符串
我始终可以转换它们。我只需要把它们放在服务器上。
我的列表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: {}
});