2016-02-29 2 views
1

Я новичок в веб-API. Использование Visual Studio Community 2015. Очень простой тестовый код.Как отправить строку в веб-контроллер API?

WebApiConfig.cs:

  config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}" 
     ); 

Вид:

 $.ajax({ 
      url: 'api/ClassingAlgorithm/', 
      type: 'POST', 
      data: { userWeightings: JSON.stringify('hello') } 
     }); 

Контроллер:

public class ClassingAlgorithmController : ApiController 
{ 
    [HttpPost] 
    public ClassingResult PostWeightings([FromBody]string userWeightings) 
    { 
     return null; 
    } 
} 

В методе контроллера "userWeightings" всегда нуль. Зачем?

+0

Я действительно просмотрел много сообщений вкл. на Stackoverflow. Они все говорили, что это работает, но это просто не так. Я потратил 8 часов на все варианты и возможности, но он просто не работает. –

+0

вы можете изменить его на 'data: {userWeightsings: 'hello'}' и попробуйте. Я действительно думаю, что проблема Json.Stringify. просто зайдите на вкладку chrome network ... что именно отправлено на сервер – harishr

ответ

0

Измените запрос ajax, как показано ниже.

$.ajax({ 
     url: 'api/ClassingAlgorithm/', 
     type: 'POST', 
     contentType: "application/json", 
     data: JSON.stringify('hello') 
    }); 
+0

Пробовал. Не работает. –

+0

Я положил следующую строку в методе: –

+0

string strReq = new System.IO.StreamReader (HttpContext.Current.Request.InputStream) .ReadT oEnd(); –

0

Я просто разработал решение:

Рабочий код имеет следующий в вызове $ .ajax:

data: JSON.stringify(userWeightings), 

не-рабочий код имеет

data: { userWeightings: JSON.stringify(userWeightings) }, 

Но я не понимаю, почему.

Смежные вопросы