2016-04-29 10 views
2

Ich bin eine Anwendung mit dem folgenden Fluss Mein Controller wird die Ansicht aufrufen. In der Ansicht rufe ich eine js-Datei auf, die angularjs-Code mit einem Aufruf an den APIController hat.Nicht gefunden Fehler beim Aufruf von apicontroller aus angularjs Datei

Ich erhalte die folgende Fehlermeldung:

Request URL:http://localhost:52096/api/EVerify/GetEmployeeList 
Request Method:POST 
Status Code:404 Not Found 

Was bin ich fehlt oder falsch zu machen.

Controller:

using System.Web.Mvc; 

namespace MVC.EVerify.Controllers 
{ 
    [Authorize] 
    public class EVerifyController : Controller 
    { 
     #region Methods 
     #region ListEVerify 
     public ActionResult ListEVerify() 
     { 
      if (Request.IsAjaxRequest()) return PartialView(); 
      return View(); 
     } 
     #endregion 
} 

Ausblick:

In dieser Ansicht auf einen Klick ich zusammen mit Javascript-Datei eine andere Ansicht bin Laden, die EverifyModule.js

<table> 
<tbody> 
    <tr ng-repeat="emp in EmployeeInfo"> 
     <td>{{emp.name}}</td> 
     <td>{{emp.hireDate}}</td> 
     <td><a class="btn-sm btn-primary pull-right" href="javascript:void(0)" onclick="LoadViewSelected('/EVerify/EVerify/EVerifySubmit', 'EVerifyModule', 'E-VerifySubmit');">E-Verify</a></td> 
    </tr> 
    </tbody> 
</table> 
genannt Winkelcode

EVerifyModule.js

var EVerifyModule = angular.module('EVerifyModule', ['angularFileUpload', 'ui.bootstrap', 'angularUtils.directives.dirPagination']); 


    EVerifyModule.factory('EVerifyModuleService', ['$http', '$window', function ($http, $window) { 

     return { 

      GetEmployeeList: function (companyId) { 
       return $http({ 
        url: '/api/EVerify/GetEmployeeList', 
        method: 'POST', 
        data: companyId 
       }); 
      } 
     }; 
    }]); 


    EVerifyModule.controller('EVerifyController', ['$scope', '$http', '$compile', 'EVerifyModuleService', '$modal', '$timeout', function ($scope, $http, $compile, EVerifyModuleService, $modal, $timeout) { 

     EVerifyModuleService.GetEmployeeList(58).then(function (response) { 
      $scope.EmployeeInfo = response.data.Employees; 
     }); 

EVerifyAPIController:

namespace MVC.EVerify.Controllers 
{ 
    [RoutePrefix("api/EVerify")] 
    public class EVerifyAPIController : ApiController 
    { 
     #region GetEmployeeList 

     [HttpPost] 
     [Route("GetEmployeeList")] 
     public async Task<IHttpActionResult> GetEmployeeList(int CompanyId) 
     { 
      List<EmployeeBO> employees = new List<EmployeeBO>(); 

      try 
      { 
       employees = await EmployeeBL.GetEmployeeList(CompanyId); 
      } 
      catch 
      { 
       employees = new List<EmployeeBO>(); 
      } 

      return Ok(new { Employees = employees }); 
     } 

     #endregion 

    } 
} 

Antwort

2

Das Modellbinder erwartet Ihren CompanyId Parameter in der URI platziert werden, aber Sie senden es innerhalb der Anforderung Körper.

sagen Explizit Ihrer Aktion-Methode, die Sie die Parameter im Körper senden:

public async Task<IHttpActionResult> GetEmployeeList([FromBody] int CompanyId) 
0

Sieht aus wie die GetEmployeeList Methode so vielleicht in einem Parameter führt Sie müssen es nur einen Parameter zu übergeben? Wie: http://localhost:52096/api/EVerify/GetEmployeeList/1

+0

versucht, einen Parameter übergibt noch bekomme ich 404-Fehler. – BumbleBee

+0

Wenn ich dies mit einem API-Client teste, erhalte ich den folgenden Fehler: { "Nachricht": "Es wurde keine HTTP-Ressource gefunden, die mit der Anfrage-URI 'http: // localhost: 52096/api/EVerify/GetEmployeeList' übereinstimmt." "MessageDetail": "Es wurde keine Aktion auf dem Controller 'EVerifyAPI' gefunden, der der Anfrage entspricht." } – BumbleBee

Verwandte Themen