我有一个包含搜索条件的网页。
一旦用户选择了他想要的内容并输入任何要搜索的关键词,他就会被重定向到另一个页面,显示他的搜索结果。
此会话对象包含其搜索的所有信息:
var ProjectSearchCriteria = (GBLProjectSearchCriteria) Session[GblConstants.SESSION_PROJECT_SEARCH_CRITERIA];
我有办法将此对象传递给API吗?
像这样:
[HttpGet]
public List<string> getEpisodes(GBLProjectSearchCriteria psc)
{
var ProjectSearchResult = new ProjectSearchResultController();
var GBLProjectSearchResultListData = ProjectSearchResult.GetProjectSearchResultList(psc);
return (from GBLProjectSearchResult item
in GBLProjectSearchResultListData
select item.Title).ToList();
}
我之所以这样做是因为搜索条件很大并且已经存在,所以我不希望API有38032823参数。
这甚至可能吗?我该怎么办?任何替代方案?
答案 0 :(得分:2)
Web API绑定来自URI,查询字符串等或请求正文的参数。如果要从任何其他东西绑定,尤其是在请求消息之外,您可以创建自己的参数绑定。见this。博客文章为类型IPrincipal
创建了一个参数绑定,但您可以为`GBLProjectSearchCriteria'执行类似的操作。
答案 1 :(得分:0)
getEpisodes((GBLProjectSearchCriteria) Session[GblConstants.SESSION_PROJECT_SEARCH_CRITERIA]);
我遇到的一个显而易见的问题是,既然您已经知道了数据类型,并且对它进行了类型转换,为什么要使用var?
var ProjectSearchCriteria = (GBLProjectSearchCriteria) ....
这不是更有意义吗?
GBLProjectSearchCriteria ProjectSearchCriteria = (GBLProjectSearchCriteria) ....