Javascript 角度及;ASP.NET MVC-将参数传递给后端控制器时,参数为null

Javascript 角度及;ASP.NET MVC-将参数传递给后端控制器时,参数为null,javascript,c#,asp.net,angularjs,asp.net-mvc,Javascript,C#,Asp.net,Angularjs,Asp.net Mvc,如果查看我的ASP.NET MVC控制器clientId的参数,它总是空的 唯一能让它不为null并成功传递数据的方法是创建一个类。。。但这会变得单调乏味,我不能为每个后端函数创建一个类来让它正常工作 有没有一种方法可以在不创建类的情况下成功传递数据 谢谢你的帮助 角工厂 PlaylistsFactory.getUsersForClient = function (clientId) { return $http({ method: 'POST', url: '/Show/Get

如果查看我的ASP.NET MVC控制器clientId的参数,它总是空的

唯一能让它不为null并成功传递数据的方法是创建一个类。。。但这会变得单调乏味,我不能为每个后端函数创建一个类来让它正常工作

有没有一种方法可以在不创建类的情况下成功传递数据

谢谢你的帮助

角工厂

PlaylistsFactory.getUsersForClient = function (clientId) {
return $http({
    method: 'POST',
    url: '/Show/GetUsersForClient',
    data: JSON.stringify(clientId)
  });
};
角度控制器

PlaylistsFactory.getUsersForClient(clientId)
  .success(function (userList) {
    console.log('success!');
  });
public JsonResult GetUsersForClient(string clientId)  //clientId is always null unless i create an object
{
  ...
}
ASP.NET MVC控制器

PlaylistsFactory.getUsersForClient(clientId)
  .success(function (userList) {
    console.log('success!');
  });
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(删除数据)。看

然后,还可以添加要传递到API路由中的参数:
/Show/GetUsersForClient/{clientId}
。看

在这种情况下,您将解决在主体中发送数据而MVC控制器端没有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格式发送json对象时,.Net无法正确识别它。

我认为json对象名称必须与C#参数名称相同。在本案中—clientId@Dudemanword当我调用playlisfactory.getUsersForClient(clientId)时,这不是我正在做的吗?啊。。我以为“数据”是默认的。。。好吧,让我试试this@user1189352你说得对。它应该在数据中。但是您应该将数据包装到另一个对象中