我在[FromUri]的查詢字符串中有一個非常奇怪的情況。 下面的代碼是我的模型參數MVC Web Api 2 [FromUri]參數綁定和查詢字符串是不同的
public class PagingParams
{
public PagingParams()
{
// set the default values
this.PageNo = 1;
this.PageSize = 30;
}
public int PageNo { get; set; }
public int PageSize { get; set; }
public string OrderBy { get; set; }
}
這是我的控制器代碼。
[Route("search")]
[ResponseType(typeof(PagingList<EmailTemplatesInfo>))]
public async Task<IHttpActionResult> Search(SearchParams searchOption, [FromUri] PagingParams p)
{
// Check
if (searchOption == null) return BadRequest("Invalid search options");
// Filter EmailTemplate by Keyword
var emailTemplate = db.EmailTemplates.Where(et => et.Name.Contains(searchOption.Keyword) ||
et.Description.Contains(searchOption.Keyword)).ProjectTo<EmailTemplatesInfo>();
// Filter by Status
emailTemplate = emailTemplate.Where(et => searchOption.Status.Contains(et.Status));
// Check & Set
if (p == null) p = new PagingParams();
// Set Default Sort
if (string.IsNullOrEmpty(p.OrderBy)) p.OrderBy = DEFAULT_ORDERBY;
return Ok(new PagingList<EmailTemplatesInfo>(p, emailTemplate));
}
基於上面的代碼,如果我想傳遞PagingParam的參數綁定。
應該是這個網址
- 搜索?您做生意= 1 &每頁= 10 &排序依據= CreatedOn
但結果我swashbuckle讓它成爲
- 搜索? p.PageNo = 1 & p.PageSize = 10 & p.OrderBy = CreatedOn
爲PagingParam對象名稱需要在查詢字符串
你可以嘗試使用預期的查詢字符串來調試應用程序,看看參數綁定正確內控制器的行爲?我在想如果他們綁定正確,那麼這個問題可能會與閃光。 –
@OJRaqueño我試過了,它要求我追加p。確保參數傳遞給模型.. – Nic