Если вы посмотрите на параметр моего ASP.NET MVC Controller clientId, он всегда равен нулю.
единственный способ, которым я могу заставить его не быть нулевым и фактически успешно передавать данные, - это создать класс... но это становится утомительным, и я не могу создать класс для каждой внутренней функции, которую я делаю, чтобы заставить это работать,
Есть ли способ успешно передавать данные без создания класса?
Спасибо за любую помощь
Угловая фабрика
PlaylistsFactory.getUsersForClient = function (clientId) {
return $http({
method: 'POST',
url: '/Show/GetUsersForClient',
data: JSON.stringify(clientId)
});
};
Угловой контроллер
PlaylistsFactory.getUsersForClient(clientId)
.success(function (userList) {
console.log('success!');
});
ASP.NET MVC-контроллер
public JsonResult GetUsersForClient(string clientId) //clientId is always null unless i create an object
{
...
}
Попробуйте сделать свой JSON-параметр совпадающим с именем вашего параметра С#, а также помещать его в полезную нагрузку данных как JSON:
return $http({
method: 'POST',
url: '/Show/GetUsersForClient',
data: {clientId: JSON.stringify(clientId)}
});
};
я бы рекомендовал вам следовать правилам API RESTful.
Это означает, что вы должны использовать HTTP-глаголы, такие как GET (получение данных), POST (обновление данных), PUT (создание данных), DELETE (удаление данных). См. Http://www.tutorialsteacher.com/mvc/actionverbs-in-mvc
Затем вы также можете добавить параметр, который хотите передать в маршрут вашего API: /Show/GetUsersForClient/{clientId}
. См. Http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
В этом случае вы отключите проблему отправки данных в теле, не имея ViewModel на стороне MVC-Controller.
Когда вы хотите продолжить свое решение, попробуйте создать объект перед его отправкой:
PlaylistsFactory.getUsersForClient = function (clientId) {
var payload = { clientId: clientId }
return $http({
method: 'POST',
url: '/Show/GetUsersForClient',
data: payload
});
};
MVC/WebAPI также иногда задыхается, когда тип содержимого в заголовке запроса является текстовым /plain или application/json. Например: json-объект не будет распознан должным образом.Net при отправке в text/plain.