【发布时间】:2018-02-19 07:28:30
【问题描述】:
在我的应用程序中有 4 个下拉菜单(family、class、series、Fusebody)和一个搜索按钮。我必须根据这些下拉列表的选择来搜索产品表。可以使用 4 个或多个下拉列表中的任何一个下拉值来完成此搜索。像下面我已经尝试过。
示例:从一个下拉列表中选择
[Route("api/KendoCascading/GetclRes/{cres}")]
public HttpResponseMessage GetclRes(string cres)
{
using (CrossReferenceTool1Entities cp = new CrossReferenceTool1Entities())
{
var query = (from u in cp.Products where (u.PrivateOnly == false && u.SelectionTool == true && u.ProductTypeID == 2 && (u.ProductFamilyID == 11 || u.ProductFamilyID == 12 || u.ProductFamilyID == 58 || u.ProductFamilyID == 59 || u.ProductFamilyID == 92) && u.Class.Contains(cres)) select u).Distinct().ToList();
HttpResponseMessage res;
res = Request.CreateResponse(HttpStatusCode.OK, query);
return res;
}
}
示例:两种不同的下拉选择
[Route("api/KendoCascading/GetresClsbyFam/{cres}/{family}")]
public HttpResponseMessage GetresClsbyFam(string cres,int family)
{
var query = (from u in ep.Products where (u.PrivateOnly == false && u.SelectionTool == true && u.ProductTypeID == 2 && (u.ProductFamilyID == 11 || u.ProductFamilyID == 12 || u.ProductFamilyID == 58 || u.ProductFamilyID == 59 || u.ProductFamilyID == 92) && u.Class.Contains(cres) && u.ProductFMSFamiliesID==family) select u).ToList();
HttpResponseMessage res;
res = Request.CreateResponse(HttpStatusCode.OK, query);
return res;
}
示例:三个下拉列表选择
[Route("api/KendoCascading/Getfaclapp/{family}/{cres}/{apRes}")]
public HttpResponseMessage Getfaclapp(int family, string cres, string apRes)
{
using (CrossReferenceTool1Entities al = new CrossReferenceTool1Entities())
{
var query = (from u in al.Products where (u.PrivateOnly == false && u.SelectionTool == true && u.ProductTypeID == 2 && (u.ProductFamilyID == 11 || u.ProductFamilyID == 12 || u.ProductFamilyID == 58 || u.ProductFamilyID == 59 || u.ProductFamilyID == 92) && u.Class.Contains(cres) && u.ProductFMSFamiliesID==family && al.ProductApplications.Any(d=>d.ProductCode.Contains(u.ProductCode) && d.ProductApplicationName.Contains(apRes))) select u).ToList();
HttpResponseMessage res;
res = Request.CreateResponse(HttpStatusCode.OK, query);
return res;
}
}
到目前为止,我已经路由了 api 方法。但是有很多组合可以路由。如果可以根据以下条件添加参数:
[Route("api/KendoCascading/GetResultByAll/{family}/{cres}/{apps}/{seID}")]
public HttpResponseMessage GetResultByAll(int family,string cres,string apps, int seID)
{
if(family==0)
{
result=query1;
}
if(family==0 && cres==null)
{
result=query2;
}
}
这样。我已经尝试过,但在 web api route 中显示错误。它不采用任何空值。该怎么做?
【问题讨论】: