2017-04-03 4 views
2

Ich arbeite auf Angular Anwendung Asp.Net MVC und ich möchte wissen, wie die Parameter aus dem Blickfeld Controller empfangen:Wie Winkel Werke in WebAPI asp.net Mvc

Ausblick:

<div class="input-group"> 
    <span class="input-group-addon"> 
     <i class="fa fa-key"></i> 
    </span> 
    <input class="form-control" type="password" ng-model="usuario.Pass" autocomplete="off" name="pass" maxlength="30" required validate-on="blur" ng-minlength="8" ng-pattern="/[0-9]+/" /> 
</div> 

<div class="input-group"> 
    <span class="input-group-addon"> 
     <i class="fa fa-key"></i> 
    </span> 
    <input class="form-control" type="password" ng-model="usuario.PassConfirmacion" autocomplete="off" name="passr" maxlength="30" required validator="usuario.PassConfirmacion === usuario.Pass" validate-on="blur" ng-minlength="8" required-message="'El campo es requerido'" 
     invalid-message="'Las contraseñas no coinciden'" /> 
</div> 

Wie Sie sehen, ich habe zwei Eingaben, die ich in der Steuerung

JSController

zu empfangen wollen
function cambiarContrasenaCtrl($scope, notificationService, $rootScope, vcRecaptchaService, membershipService, $state, apiService, $window) { 
    $scope.usuario = {}; 
    $scope.cambiarContrasena = cambiarContrasena; 

    function cambiarContrasena() { 
     $('#recovery').prop('disabled', true); 
     $('.page-spinner-bar').removeClass('hide'); 
     membershipService.cambiarContrasena($scope.usuario, credencialCorrecta, credencialIncorrecta); 
    } 

MembershipService JS:

(function (app) { 
    'use strict'; 

    app.factory('membershipService', membershipService); 

    membershipService.$inject = ['apiService', 'notificationService', '$http', '$base64', '$cookies', '$rootScope', '$localStorage', '$sessionStorage']; 

    function membershipService(apiService, notificationService, $http, $base64, $cookies, $rootScope, $localStorage, $sessionStorage) { 

     var service = { 
      cambiarContrasena: cambiarContrasena, 
     } 
     var url = window.location.href.split('?Token=')[1];; 

     function cambiarContrasena(usuario, completado, fallo) { 
      apiService.post('/api/usuario/cambiarContrasena?token='+url, usuario, 
      completado, 
      fallo); 
     } 

Wenn ich Anwendung ausführen und ich fülle gibt die Post Aktion gibt mir auf $scope.usuario Eingang

Pass:"newpass" 
PassConfirmacion:"newpass" 

Jetzt schätzt ich möchte wissen, wie diese zu erhalten auf meinem Controller

[AllowAnonymous] 
[HttpPost] 
[ActionName("cambiarContrasena")] 
[Route("cambiarContrasena")] 
public HttpResponseMessage CambiarContrasena(HttpRequestMessage request, Guid token) 
{ 
    return CreateHttpResponse(request,() => 
    { 
     HttpResponseMessage response = null; 

     if (ModelState.IsValid) 
     { 
      _usuarioRecuperacionService.CambiarContrasena(token); 
     } 
     return response; 
    }); 
} 

Wie kann ich es tun ?. Grüße

Anmerkung: Ich basiert meine Anwendung in: this one

Antwort

1

Sie erstellen müssen (POCO) Modellklasse in API.

public class UserInfo 
{ 
public string Pass { get; set; } 
public string PassConfirmacion { get; set; } 
} 

API POST-Methode

[AllowAnonymous] 
    [HttpPost] 
    [ActionName("cambiarContrasena")] 
    [Route("cambiarContrasena")] 
    public HttpResponseMessage CambiarContrasena(UserInfo model, Guid token) 
    { 
     //here you can access properties of model 
     //model.Pass 
     //model.PassConfirmacion 
     return CreateHttpResponse(request,() => 
     { 
      HttpResponseMessage response = null; 

      if (ModelState.IsValid) 
      { 
       _usuarioRecuperacionService.CambiarContrasena(token); 
      } 
      return response; 
     }); 
    } 

Bitte stellen Sie sicher Ihre Anfrage conentType in Call $ http, sollte es application/json sein.

+0

und wie bekomme ich es im Service 'öffentliche Zeichenfolge CambiarContrasena (Guid-Token)' Ich sende als zweiten Parameter vom Controller als '_usuarioRecuperacionService.CambiarContrasena (Token, Modell);' aber wie kann ich es in einem Dienst zu fangen? – Luis

+0

Erstellen Sie UserInfo POCO-Klasse in der gemeinsamen Bibliothek, die von Schichten (Service, API, etc ..) zugegriffen werden kann, dann können Sie dieses Modell in Service-Methode übergeben –

+0

Es funktioniert wirklich Vielen Dank! – Luis

Verwandte Themen