2

serviceStack で開発された REST サービスを呼び出しています。クライアントとして angularJs を使用していますが、何らかの理由で json モデルを requestDTO にバインドできないという問題があります。

私のangularJsコード:

私はAngularJsサービスを持っています

angular.module('mseApp.services', ['ngResource']).
    factory('loginService',
        function ($resource) {
            return $resource('/Api/User/login', '',
                {
                    query: {
                        method: 'POST',
                        params:{  }
                    }
                });
        });

コントローラ:

function loginCtrl($scope, loginService) {
   $scope.submit = function () {
       var user = loginService.query({loginRequest:$scope.loginRequest});
   };
}

意見:

<div>
     <div ng-model="loginRequest">
         <form ng-submit="submit()"  ng-controller="loginCtrl">

             <input id="username" ng-model="loginRequest.Username"  type="text" name="text"  />
             <input id="password" ng-model="loginRequest.Password" type="text" name="text" />
             <input type="submit" id="submit" value="Submit" />
             <span ng-model="Username"></span>


         </form>

     </div>
</div>

ドットネット側

私のDTO

 public class LoginRequest
    {
        public string Username { get; set; }
        public string Password { get; set; }

    }

 public UserResponse Post(LoginRequest loginRequest)
 {
 }

唯一の問題は、私のサービスメソッドで LoginRequest が null であることです。

何か案は???

4

2 に答える 2

3

送信するだけ

query($scope.loginRequest)

それ以外の

query({loginRequest:$scope.loginRequest})

それはあなたの問題を解決します。

于 2013-08-02T05:12:25.823 に答える
1

クエリの $promise オブジェクトを利用して、$scope へのバインディングの処理を延期することもできます

function loginCtrl($scope, loginService) {
  $scope.submit = function () {
  var user = loginService.query.$promise.then(function (promise) {
    $scope.userResponse = promise.d;
   });
 };
}

次に、次のようにバインドします(ユーザー名が UserResponse.Username にあると仮定します)

<span ng-model="UserResponse.Username"></span>
于 2013-10-09T03:18:20.280 に答える