Так у меня есть функция Web API, который выглядит как этотPass аргумент API функции AngularJS C#
[Route("api/Account/Save")]
[HttpPut]
public IHttpActionResult SaveAccount(Account acc)
{
if (acc.AccountID != null)
{
// do stuff
var result = new {};
}
return Ok(result);
}
Когда я иду к этой api/Account/Save
конечной точки, мне нужно сохранить экземпляр Account
класса в базу данных. В пользовательском интерфейсе веб-страницы должен быть введен пользователь, например ID, Name, ...
У меня возникла проблема с передачей экземпляра класса методу. Я знаю, как передать что-то вроде строки через конечную точку, а затем в функцию, но я не знаю, как это сделать.
Это мой AngularJS. Я помещал их в отдельные JS-файлы, поэтому я много раз заявляю об этом.
angular.module('MyApp')
.factory('accountResource', function ($resource) {
return {
saveAccount: $resource('/api/Account/Save', {}, {
query: {
method: 'PUT',
params: {
// probably pass it here?
// I pass stuff like ID's to the function here
}
}
})
};
});
angular.module('MyApp')
.factory('accountFactory', ['$q', 'accountResource', function ($q, accountResource) {
var service = {
saveAccount: saveAccount,
account: {}
}
function saveAccount(account) {
return accountResource.saveAccount.query().$promise.then(
function (result) {
service.account = result.account;
return result.$promise;
}, function (error) {
return $q.reject(error);
});
}
return service;
}]);
Когда я запускаю отладчик и перерыв на этой линии в acccountFactory
return accountResource.saveAccount.query().$promise.then(
Параметр account
действительно есть все атрибуты (ID, account, ...)
, и я вижу значения, введенные пользователем, назначаются им. Я просто не знаю, как передать это функции API. И если я изменю свой $resource
вот так и пройду account
до query
, это не сработает (оно работает только тогда, когда я передаю вещи, подобные ID). Потому что я передаю в объект, то URL выглядит следующим образом:
/api/Account/Save/%5Bobject%20Object%5D
angular.module('MyApp')
.factory('accountResource', function ($resource) {
return {
saveAccount: $resource('/api/Account/Save/:acc', {}, {
query: {
method: 'PUT',
params: {
acc: '@acc'
}
}
})
};
});