Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将集合传递给GET方法_C#_Asp.net Web Api_Query String - Fatal编程技术网

C# 如何将集合传递给GET方法

C# 如何将集合传递给GET方法,c#,asp.net-web-api,query-string,C#,Asp.net Web Api,Query String,我在MVC Web Api中使用了此GET方法: public IQueryable<Employee> GetEmployeeByJobTitle(List<string> jobTitles) { var employeeByJobTitle = from e in db.Employee where jobTitles.Contains(e.JobTitle)

我在MVC Web Api中使用了此GET方法:

public IQueryable<Employee> GetEmployeeByJobTitle(List<string> jobTitles)
{
    var employeeByJobTitle = from e in db.Employee
                             where jobTitles.Contains(e.JobTitle)
                             select e;
    return db.Employee;
}
差不多

string BuiltUriFromObject(List<string> jobTitles){};
这种情况适合将从querystring创建指定模型的

像这样声明控制器

[HttpGet]
public IHttpActionResult GetEmployeeByJobTitle([FromUri]string[] jobTitles)
{
    var employeeByJobTitle = from e in db.Employee
                             where jobTitles.Contains(e.JobTitle)
                             select e;
    return Ok(employeeByJobTitle.ToArray());
}
api/Employee?jobTitles=%22Production%20Technician%20-%20WC60%22&jobTitles=%22Production%20Supervisor%20-%20WC60%22
通过添加任意多的标题来调用此方法,但将所有标题声明为同一参数名称jobTitles=CIO&jobTitles=CTO,然后FromUri将创建一个列表{CIO,CTO}

在你的情况下,像这样的

[HttpGet]
public IHttpActionResult GetEmployeeByJobTitle([FromUri]string[] jobTitles)
{
    var employeeByJobTitle = from e in db.Employee
                             where jobTitles.Contains(e.JobTitle)
                             select e;
    return Ok(employeeByJobTitle.ToArray());
}
api/Employee?jobTitles=%22Production%20Technician%20-%20WC60%22&jobTitles=%22Production%20Supervisor%20-%20WC60%22

你必须使用GET吗?对于复杂的数据,POST会更好。关于您的问题,您可能会更好地将JSON对象作为参数传入,然后在处理程序中解析它。我建议为JSON对象创建一个容器,并将其用作参数;这真的是你想要的吗?此外,您还可以使用这种方法获得上下文已被处理的异常;将结果集具体化并返回IEnumerable可能会更好,这样可以清理输出并降低通过线路发送PII的风险。只要给请求者他们需要的,不要更多。谢谢你,蒂姆。我对Web Api相当陌生。我曾想过使用POST请求,但为了获得对象列表而使用POST请求是否正确?我仍然必须调用我的Web Api方法GetEmployeeByJobTitles,但它将执行POST操作。我很困惑。你能帮我吗?所以@K_foxer9我会首先转换List jobTitles=。。。在json对象中,然后使用此字符串用类似的内容组成uri