角,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
{
  ...
}

角,ASP.当我向后端控制器传递参数时,参数为空

尝试使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对象