Ich hoffe, Sie können mir helfen. Ich möchte meine Haare ausziehen!AngularJS API Anruf mit ID als Parameter und C# Contoller
Ich versuche, einen API-Aufruf mit einer ID als übergebenen Parameter, um einen bestimmten Datensatz zu finden.
Etwas wie folgt aus: $http.get("/api/vendor/ReadVendor/" + vendorId)
Was passieren muss:
Wenn ich einen Anbieter der Aufruf an die API wählen wird mit dem einzigartigen Vendor-ID hergestellt. Dies wird an den Controller, DTO und DB übergeben und gibt die angegebenen Daten zurück.
Ich erhalte eine Fehlermeldung:
404/Nicht gefunden { "message": "Nein HTTP-Ressource wurde gefunden, dass der Anforderungs-URI übereinstimmt 'http://localhost:60090/api/vendor/ReadVendor/5'.", "MessageDetail": "Keine Aktion gefunden wurde auf dem Controller 'Vendor', der der Anfrage entspricht. "}
Mein Stack Strömung ist so etwas wie folgt aus:
- adminVendorNumber.html
- adminVendorNumber.controller.js
- VendorController.cs
- VendorDTO.cs
Dies ist Teil meiner adminVendorNumber.html für den Aufruf der AngularJS Funktion:
<label>Vendor</label>
<div class="input-dropdown">
<cc-dropdown cc-placeholder="Select Vendor"
ng-model="NewVendorNumber.Vendor"
ng-disabled="false"
ng-options="vendorData"
cc-fields="VendorId"
cc-key-field="VendorId"
cc-allow-search="false"
ng-required="false"
ng-change="vendorSelected()"
name="iVendor">
</cc-dropdown>
</div>
</div>
Das ist mein AngularJS Controller (ein Teil davon mit meiner spezifischen Funktion):
(function() {
"use strict";
angular
.module('app.adminVendorNumber')
.controller('adminVendorNumberController', adminVendorNumberController);
adminVendorNumberController.$inject = ['$http', 'logger', '$scope'];
function adminVendorNumberController($http, logger, $scope) {
var vm = $scope;
vm.formSubmmision = true;
vm.vendorItemData = null;
vm.itemGroupData = null;
vm.vendorData = null;
vm.vendorSelected = vendorSelected;
vm.save = save;
activate();
function activate() {
return vendorItemData().then(getAllItemGroups).then(getVendorData).then(function() {
logger.info('Activated Vendor Number Creation');
});
}
function vendorSelected() {
vm.formSubmmision = true;
return getVendorById(vm.NewVendorNumber.Vendor.VendorId);
}
function getVendorById(vendorId) {
return $http.get("/api/vendor/ReadVendor/" + vendorId)
.then(Success)
.catch(Failure);
function Success(responce) {
vm.vendorSelected = responce.data.Records;
return vm.vendorSelected;
}
function Failure(error) {
logger.error('Failed to get Vendor Data ' + error.data.Message);
}
}
};
}
)();
Hier ist ein Teil meiner VendorController.cs Funktion, die aufgerufen wird:
public class VendorController : ApiController
{
private VendorDTO dto = new VendorDTO();
public HttpResponseMessage ReadVendor(int vendorId)
{
try
{
CommandResult<Vendor> result = dto.ReadVendor(vendorId);
return Request.CreateResponse((result.Status == CommandStatus.Success ? HttpStatusCode.OK : HttpStatusCode.InternalServerError), result);
}
catch (IOWAException ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
}
}
}
}
Hier ist der nächste Schritt, wo die VedorDTO.cs heißt:
public class VendorDTO
{
public CommandResult<Vendor> ReadVendor(int vendorId)
{
return readVendor(vendorId);
}
private CommandResult<Vendor> readVendor(int vendorId)
{
CommandResult<Vendor> result = null;
try
{
VendorContext dalVendor = new VendorContext();
result = dalVendor.Read(vendorId);
}
catch (IOWAException ex)
{
result = new CommandResult<Vendor>(ex, "Error reading Vendors");
}
return result;
}
Vielen Dank! Sehr einfacher Fehler: D – onmyway