2016-06-01 1 views
2

У меня есть действие контроллера следующие APIWebAPI параметр объекта с FromUri равно нулю, если нет строки запроса не прошло

[HttpGet] 
[Route("assets")] 
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria) 
{ 

} 

Когда я проверить это с стельку путем доступа к URL

http://localhost/assets

параметр searchCriteria имеет значение null, но когда я пытаюсь использовать

http://localhost/assets?param1=1&param2=2 then searchCriteria имеет экземпляр объекта.

SearchCriteria класс определяется как

public class SearchCriteria 
{ 
    public SearchCriteria() 
    { 
     Param1 = ""; 
     Param2 = ""; 
     PageIndex = 0; 
     PageSize = 10; 
    } 
    public string Param1 { get; set; } 
    public string Param2 { get; set; } 
    public int PageIndex{ get; set; } 
    public int PageSize { get; set; } 
} 

Что плохого в моем подходе? Почему параметр action равен null, когда не передается запрос?

Благодаря

ответ

3

Ну ... потому что нет данных присутствует для создания экземпляра параметра.

Посмотрите на URL. Здесь у вас есть значения для создания параметра:

http://localhost/assets?param1=1&param2=2 

Обратите внимание, как param1 и param2 поставляются со значениями, которые сопоставляются непосредственно с типом параметра:

public string Param1 { get; set; } 
public string Param2 { get; set; } 

Но в этом URL, Есть нет значений:

http://localhost/assets 

Так что для создания экземпляра параметра метода нечего использовать.

null буквально означает «здесь ничего нет». Поскольку никаких параметров не было, ничего там нет.

+0

Но у меня есть значения по умолчанию в объекте. Поэтому я хотел бы использовать значение по умолчанию. Я обновил свой запрос. –

+0

@MukilDeepthi: для достижения пользовательского поведения в этом случае вам, вероятно, потребуется создать настраиваемое связующее устройство для типа 'SearchCriteria'. Существует ряд примеров, доступных в Интернете, и несколько способов использовать его. (Вы можете использовать его глобально в приложении или просто для этого действия, например.) – David

+0

Могу ли я получить пример, пожалуйста, –

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