2013-07-26 5 views
1

У меня есть модель под названием PostUserAccount, и я пытаюсь использовать ее в ApiController в качестве параметра так, как это обычно бывает, когда вы создаете контроллер с действиями чтения/записи, используя Entity FrameworkПараметр модели, не распознанный методом контроллера

Пример генерируется генератором контроллера:

// POST api/Profile 
    public HttpResponseMessage PostUserProfile(UserProfile userprofile) 
    { 
     if (ModelState.IsValid) 
     { 
      db.UserProfiles.Add(userprofile); 
      ...etc 

кода, что я работаю с:

// POST gamer/User?email&password&role 
    public HttpResponseMessage PostUserAccount(PostAccountModel postaccountmodel) 
    { 
     if (!ModelState.IsValid) 
     { 
      return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState); 
     } 

     if (postaccountmodel == null) return Request.CreateResponse(HttpStatusCode.BadRequest, "model is null"); 

     ...etc 

по какой-либо причине, postaccountmode l в этом случае является нулевым, и выполнение этой команды api возвращает «model is null». есть идеи?

Вот модель в вопросе

public class PostAccountModel 
{ 
    [Required] 
    public string Email { get; set; } 

    [Required] 
    public string Password { get; set; } 

    public string Role { get; set; } 

    public string Avatar { get; set; } 

    public string DisplayName { get; set; } 
} 
+0

Было бы интересно посмотреть на ваш код модели. Кроме того, вы можете просто обеспечить плохой JSON, и ваша модель не может быть обезвожена. Ваша проблема, скорее всего, где-то на стороне клиента. –

+0

. Я добавил код модели в Q – Furyvore

+0

. Комментарий выше вашего метода действий больше похож на запрос на получение с помощью queryparams, а не на пост. Как вы звоните в API? – Turnkey

ответ

2

Вы пытаетесь отправить модель в строке запроса URI. Проблемы:?

  1. строка запроса не очень хорошо образован - должен быть Email = ххх & Password = ххх & ...

  2. Вам нужно декорировать параметр postaccountmodel с [FromUri] атрибута, сообщить веб-API для привязки модели к URI

Другой вариант - отправить модель в тело запроса как JSON или XML. Я бы рекомендовал это, особенно если вы действительно отправляете пароль в запросе. (А использование SSL!)

В этом разделе описываются параметры связывания в Web API: http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

+0

Моя строка запроса имеет эту форму, однако второе предложение решило мою проблему. Благодаря! – Furyvore

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