【问题标题】:Passing params from AngularJS to C# Controller将参数从 AngularJS 传递到 C# 控制器
【发布时间】:2015-07-22 16:17:22
【问题描述】:

我已尝试对此进行研究,但在任何地方都找不到任何有用的信息或任何相关答案。

对于我的角度控制器,我有:

app.controller('AdminCtrl', function ($scope, $http) {
$scope.data = {
    Name: '',
    Password: ''
},
$scope.login = function (data) {
    $http({
        method: 'POST',
        url: '/login/postlogin',
        data: JSON.stringify({
            data: $scope.data
        }),
        contentType: "application/json",
        dataType: "json"
    }).success(function (data) {
        alert('success!');
    }).error(function (error) {
        alert(error.message);
    })
}
});

对于我的 c# 控制器,我有一个非常基本的设置:

    [HttpPost]
    public string PostLogin(string data) {          
        return string.Empty;
    }

我的问题是在 c# 控制器内部,数据始终为空。有谁知道如何将名称和密码参数传递给 c# 控制器?我知道我正在从我拥有的文本框中为它们接收值。我也收到了成功消息/警报。谢谢!

【问题讨论】:

  • How to post an object to WebAPI 的可能副本。还有更多关于 SO 的答案。使用搜索功能。
  • 似乎您正在阅读 jQuery ajax 文档以使用 $http 而不是阅读角度文档
  • 对于那些以“过于宽泛”投票结束的人来说,事实并非如此。
  • @Nasreddine 我在发布之前查看了该文档,但它并没有真正帮助我完成我想做的事情。在查看了发布的答案以及其他问题之后,我越来越接近我想要完成的目标。
  • $scope.data 不是string

标签: c# angularjs


【解决方案1】:

数据不是字符串。在 c# 中创建一个具有名称和密码作为属性的对象,并具有以下内容:

[HttpPost]
public string PostLogin(Data data) {  

编辑以回应评论: 是的,您需要在控制器中包含 Data 所在的命名空间。您可以尝试将 Data 对象直接放在上面。

 public class Data
    {
        public string Name { get; set; }
        public string Password { get; set; }
    }

为清楚起见,数据不应被字符串化,而应以data: data 发送

【讨论】:

  • 我正在尝试使用(数据数据),但它一直告诉我找不到数据。是否有我缺少的命名空间?我已经成功地让它与 HaudurHaf 发布的解决方案一起工作,但我想将它作为一个对象传递,因为我可能会在这里传递几个参数。当我使用通用(对象数据)时,什么都没有。
  • 很高兴你让它工作,但是传递对象是个好主意。希望编辑有所帮助。您不想对其进行字符串化 - 将编辑答案以使其清楚一点。
  • 感谢编辑!那工作得很好。感谢您的帮助!如果可以的话,我会给你一个 +1。
  • 谢谢。我已经对你的问题投了赞成票;有人很刻薄,在我之前投了反对票。
【解决方案2】:

直接发送 $scope.data 即可,不要对其进行字符串化。然后修改您的 PostLogin 方法,使其接受两个字符串,一个称为名称,一个称为密​​码。

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 2017-05-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多