无法使用angularjs $ http请求将参数发送到服务器操作方法

时间:2015-02-21 13:36:04

标签: javascript c# ajax asp.net-mvc angularjs

我正按以下方式对服务器进行Ajax请求:

应用设置:

var appRoot = angular.module('demoApp', ['ngRoute', 'ngResource']);
appRoot.config(['$routeProvider', function($routeProvider) {
         $routeProvider
         .when('/', { templateUrl: '/ngPartials/_Login.html', controller: 'LoginCtrl' })
         .otherwise({ redirectTo: '/ngPartials/_Login.html', controller: 'LoginCtrl' });
        }
]);

工厂:

appRoot.factory('LoginResource', function ($http) {
    var loginResource = {
        response:{},
        get: function (param) {
            $http.get('/Login/Login', param).
             success(function (data, status, headers, config) {

                 this.response = data;
             }).
             error(function (data, status, headers, config) {
                 alert('error');

            });
        }
    }
    return loginResource;
});

控制器:

appRoot.controller('LoginCtrl', function ($scope, LoginResource) {
    //Make a get request on login resource
    $scope.User = LoginResource.get(
    {
       Role: val,
       Email_Id: $scope.Email,
       Pwd: $scope.Password
    }, function (response) { 
    //do someting in callback function
    });
});

但我不知道我在上面的代码中做了什么错误,当我收到请求时,参数(Role,Email_Id,Pwd)没有绑定到我的服务器Action方法。该方法被正确命中,但模型值未被绑定。

服务器端模型:

public class LoginModel
{
    public string Role { get; set; }
    public string Email_Id { get; set; }
    public string Pwd { get; set; }
    public bool IsEmailValidation { get; set; }

}

行动方法:

    [HttpGet, ActionName("Login")]
    public JsonResult Login(LoginModel oLogin)
    {
       ...
    }

当我从angular调用上面的action方法时,方法被命中,但是对象oLogin中的所有属性都是null。我上面的代码出了什么问题?

修改

以前我用的是$资源而不是$ http,所以一切都运行得很好。

appRoot.factory('LoginResource', function ($resource) {
    return $resource('/Login/Login');
});

1 个答案:

答案 0 :(得分:1)

在LoginResource中,$ http.get的第二个参数是配置,而不是参数...所以将其更改为以下内容:

get: function (param) {
    $http.get('/Login/Login', { params: param }).