Angular & ASP.NET MVC - параметр равен нулю, когда я передаю параметр в свой внутренний контроллер

0

Если вы посмотрите на параметр моего 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
{
  ...
}
  • 0
    Я считаю, что имя вашего JSON-объекта должно совпадать с именем вашего параметра C #. В этом случае - clientId
  • 0
    @Dudemanword не то, что я делаю, когда я вызываю PlaylistsFactory.getUsersForClient (clientId)?
Теги:
asp.net-mvc

2 ответа

2
Лучший ответ

Попробуйте сделать свой JSON-параметр совпадающим с именем вашего параметра С#, а также помещать его в полезную нагрузку данных как JSON:

return $http({
    method: 'POST',
    url: '/Show/GetUsersForClient',
    data: {clientId: JSON.stringify(clientId)}
  });
};
  • 0
    ах .. я думал, что «данные» это то, что должно быть по умолчанию ... хорошо, позвольте мне попробовать это
  • 0
    @ user1189352 Вы правы. Это должно быть в данных. Но вы должны обернуть ваши данные в другой объект
Показать ещё 1 комментарий
0

я бы рекомендовал вам следовать правилам 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню