Передача параметра JSON через запрос GET контроллеру MVC - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь передать некоторый JSON по строке запроса GET-запроса контроллеру MVC, но, похоже, не могу заставить его пройти как-нибудь иначе, чем null.

Ajax (через TypeScript)

$.ajax(url, {
  method: 'GET',
  data: { 'request': JSON.stringify(this.request) },
  dataType: 'json'
})

Контроллер MVC

[Route("stuffAndThings/{request?}")]
public async Task<HttpResponseMessage> GetStuff(requestType request)
{
}

Поскольку это TypeScript, передаваемый объект является представлением TypeScript модели C #, включая несколько пользовательских объектов

TS класс

class requestType {
  pageData: PageData;
}

C # класс

public class requestType
{
  public PageData pageData { get; set; } = new PageData();
}

Глядя на запрос в devtools, кажется, что он правильно передается в строке запроса, но всегда поступает на контроллер как нулевой.

Чего мне не хватает?

EDIT

Чтобы ответить на пару комментариев, метод контроллера предназначен исключительно для извлечения данных и в будущем может превратиться в метод WebAPI, поэтому я хотел бы сохранить его как запрос GET, если это возможно.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

В контроллере MVC вы получите параметр в виде строки, поскольку вы передали параметры в виде строки через запрос GET

[Route("stuffAndThings/{request?}")]
public async Task<HttpResponseMessage> GetStuff(string request)
{

}

Сделать requestType класс сериализуемым, теперь в вашем методе вы должны десериализовать строку json в ваш объект

using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(request)))  
{   
   DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(requestType));  
   requestType requestObj = (requestType)deserializer.ReadObject(ms);   
    //your code here   
}
0 голосов
/ 26 апреля 2018

Json.Stringfy преобразует ваш запрос в строковую форму, а в контроллере вы получаете определенный тип. Таким образом, для получения правильного результата обновите строчку g вместо RequestType .

если проблема не решена, вы обращаетесь ко мне. Я здесь

Пожалуйста, ответьте или как, если это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...