2014-10-15 2 views
1

Следующая строка не десериализуется действием MVC. Действие получило одобрение, но я получаю значение null для searchModel в действии.ASP.NET WebAPI HttpGet Action - модель имеет значение null после querystring.

https://test.api.domain.com:9090/mont/contact/searchemployee?lastname=Smith

EDIT: Упрощенная модель

Модель

public class EmployeeSearchModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

Действие:

[HttpGet] 
    public List<Employee> SearchEmployee(EmployeeSearchModel searchModel) 
    { 
     List<Employee> employees = new List<Employee>(); 
     try 
     { 
      if (searchModel != null) 
      { 
       //some logic 
      } 
      else 
      { 
       //dirty feedback for testing - this is what the action returns 
       employees.Add(new Employee { FirstName = "searchModel was null" }); 
      } 
     } 
     catch (Exception e) { WriteFileLog(_logPath, e.ToString()); } 

     return employees; 
    } 
+0

попробуйте использовать строку вместо объекта Сотрудник. – NMK

+0

@NMK спасибо, уже пробовал, он работает. но нужно использовать модель – joym8

+0

Я думаю, вы должны поместить '[HttpPost]' вместо '[HttpGet]' – kbaccouche

ответ

4

Является ли это ASP.NET MVC или веб-API? Из того факта, что вы возвращаете список сотрудников из действия контроллера вместо ActionResult, я вижу, что это веб-API. Если это так, вы можете применить атрибут [FromUri] к модели:

public List<Employee> SearchEmployee([FromUri]EmployeeSearchModel searchModel) 
public List<Employee> SearchEmployee([FromUri]EmployeeSearchModel searchModel) 
+0

Вот и все! Большое спасибо такемыоксиген! Это WebAPI. – joym8

+0

Хе-хе, я думал, что он использовал MVC4, а не WebAPI, исходя из вопроса :) –

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