角,ASP.当我向后端控制器传递参数时,参数为空
本文关键字:参数 后端 ASP 控制器 | 更新日期: 2023-09-27 18:10:19
如果你看一下我的ASP的参数。. NET MVC控制器clientId,它总是空的
唯一的方法,我可以得到它不为空,实际上通过成功地传递数据是创建一个类…但这很繁琐,我不能为每个后端函数创建一个类,只是为了让它工作。
有没有一种方法可以成功地传递数据而不创建类?
谢谢你的帮助
角工厂
PlaylistsFactory.getUsersForClient = function (clientId) {
return $http({
method: 'POST',
url: '/Show/GetUsersForClient',
data: JSON.stringify(clientId)
});
};
角控制器
PlaylistsFactory.getUsersForClient(clientId)
.success(function (userList) {
console.log('success!');
});
ASP。. NET MVC控制器
public JsonResult GetUsersForClient(string clientId) //clientId is always null unless i create an object
{
...
}
尝试使JSON参数与c#参数的名称相匹配,并将其封装在数据有效负载JSON中:
return $http({
method: 'POST',
url: '/Show/GetUsersForClient',
data: {clientId: JSON.stringify(clientId)}
});
};
我建议您遵循RESTful API的规则。
这意味着您应该使用HTTP动词,如GET(获取数据)、POST(更新数据)、PUT(创建数据)、DELETE(删除数据)。见http://www.tutorialsteacher.com/mvc/actionverbs-in-mvc
然后你还可以添加你想要传递的参数到你的API的路由:/Show/GetUsersForClient/{clientId}
。见http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute——路由- asp -网- mvc - 5. - aspx
在这种情况下,你脱离了在主体中发送数据的问题,而无需在MVC-Controller端使用ViewModel。
当你想继续你的解决方案,然后尝试在发送它之前创建对象:
PlaylistsFactory.getUsersForClient = function (clientId) {
var payload = { clientId: clientId }
return $http({
method: 'POST',
url: '/Show/GetUsersForClient',
data: payload
});
};
当请求头中的内容类型是text/plain或application/json时,MVC/WebAPI有时也会阻塞。例如:当以text/plain格式发送时,. net将无法正确识别json对象