我想知道如何将多个查询字符串值传递给我的web api项目。我通过参考可以传递ID的教程制作了一个。
// GET: api/Product
public IQueryable<product> Getproducts()
{
return db.products;
}
// GET: api/Product/5
[ResponseType(typeof(product))]
public IHttpActionResult Getproduct(int id)
{
product product = db.products.Find(id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
请帮助我理解如果我有多个参数可以通过&amp;我怎么能用querystring
来做呢更新
public class ProductController : ApiController
{
public IEnumerable<product> Get()
{
using(foxbop7g_foxbox_mainEntities entities = new foxbop7g_foxbox_mainEntities())
{
return entities.products.ToList();
}
}
public product Get(string status)
{
using (foxbop7g_foxbox_mainEntities entities = new foxbop7g_foxbox_mainEntities())
{
return entities.products.FirstOrDefault(e => e.status == status);
}
}
}
答案 0 :(得分:2)
如果我有多个参数,请帮助我理解 传递与传播我怎么能用querystring
来做呢
您可以将它们作为参数添加到您的方法中。例如,如果通过指定产品ID和类别获得产品的含义,您可以定义:
[ResponseType(typeof(product))]
public IHttpActionResult Getproduct(int id, string category)
如果您必须为GET请求执行此操作,这是常见的解决方案。 (GET请求没有POST作为POST或PUT等请求)。如果你有一个POST,PUT,...请求,你可以通过定义一个模型(一个具有你想从POST接收的属性的类,PUT ......)来匹配你的值,然后将其定义为方法并使用[FromBody]
属性作为前缀。
E.g。
[HttpPut]
public IHttpActionResult Customer([FromBody] CustomerModel)
和
public class CustomerModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
答案 1 :(得分:0)
如果搜索特定记录,请使用带有lambda表达式的Single或SingleOrDefault方法(p =&gt; p.id)。通过SingleorDefault,您可以执行查询。启用延迟加载时,只能查找。 如果搜索很多使用Where(也使用lambda表达式)并且不要忘记添加.ToList();最后,你想迭代它们来显示例如。如果有外键,请使用.Include进行预先加载。
答案 2 :(得分:0)
您可以通过以下方式之一完成此操作:
Uri binding (Using [FromUri])
:您可以在网址中传递参数,然后使用[FromUri]属性修饰action参数。例如:你的方法可能是这样的
public HttpResponseMessage Get([FromUri]String someInput1, [FromUri]String someInput2) {}
你要求uri可以像...?someInput1=param1&someInput2=param2
:这将获得所有查询参数作为可数的键值对。然后你可以做类似的事情:
var queryStrings = Request.GetQueryNameValuePairs(); var key = "queryKey";//forexample:"someInput1" in the above url var match = queryStrings.FirstOrDefault(keyValue =>String.Compare(keyValue.Key,key,StringComparison.OrdinalIgnoreCase)==0); var value = match.Value;
请查看以下链接以进一步了解: