[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のパラメータバインディングを渡す場合は、上記のコードを基にしてください。
が
- 索?PAGENO = 1 &がPageSize = 10 &のOrderBy = CreatedOn
しかし、その結果、このURLである必要があり、私はそれが
- 検索になっswashbuckleに入りますか? p.PageNo = 1 & p.PageSize = 10 & p.OrderBy = CreatedOn
PagingParamのオブジェクト名は、私がどのフィックスを発見したクエリ文字列
をPagingParamsあなたが予想されるクエリ文字列を使用してアプリケーションをデバッグするとパラメータが正しく内部バインドされたかどうかを確認しようとすることができますコントローラの動作?私は彼らが正しくバインドされていれば、問題はスワッシュバクルであるかもしれないと思っています。 –
@OJRaqueño私はpを追加する必要がありました。パラメータがモデルに渡されるようにします。 – Nic