2013-03-01 3 views
3

Я тестирую push-уведомление в приложении календаря. Когда я создаю событие в приложении календаря, мой сайт получает запрос HttpPost со строкой JSON. Я написал такой код, но я не смог получить строку JSON в моем методе действий.HttpPost в asp.net MVC 4

 [HttpPost] 
     public ActionResult Push(String jsonReq) 
     { 
     Console.write(jsonReq); 
     return View(); 
     } 

Когда я создаю модель в той же структуре, что и JSON, я могу получить запрос. похоже, он тесно связан с структурой JSON? Я использую в ASP.Net MVC 4.

 [HttpPost] 
    public ActionResult Push(JSONModel jsonModel) 
    { 

     return View(); 
    } 
+1

добавить свой звонок ajax, пожалуйста, –

+2

. Что вас беспокоит? Правильный способ - использовать модель. –

+0

@ DarinDimitrov, мой вопрос: что, если я не знаю структуру? то я не могу создать модель правильно? Благодарю. – dotnetrocks

ответ

4

Связывание с моделью ASP.NET MVC работает следующим образом: он анализирует запрос, пытается найти имя-имя, соответствующее между его параметрами и параметрами Action, и если найденный экземпляр является последним. Вы не отправляете параметр с именем jsonReq, поэтому вы не можете получить что-то в своем методе действий.

Если вы действительно хотите работать с планом JSon строкой, не давая ASP.NET MVC разобрать его для вашего, у вас есть два варианта:

  1. к нему доступ через HttpContext.Request в действии
  2. Написать пользовательскую модель связующих который отобразит тело запроса на параметр jsonReq
1

запрос не будет иметь значение имени jsonReq так не знал бы, чтобы отобразить JSON для этого параметра действия.

Где, как ваш JSONModel будет иметь имена свойств, которые соответствуют названным значениям JSON, входящим в запрос, таким образом, объект, который мы заполняем.