在WebApi控制器中使用字符串作为路由参数.错误405
本文关键字:路由 参数 错误 字符串 控制器 WebApi | 更新日期: 2023-09-27 18:23:48
我正在尝试在WebApi控制器中使用字符串作为参数。我将自定义路由设置为[route("api/sets/{setid}")],但这也没有帮助。控制器代码非常简单,我真的不知道错误405的问题是什么。这是控制器代码:
public class SetDetails
{
public string ItemDescription { get; set; }
public string ItemName { get; set; }
public string ItemUrl { get; set; }
public string ItemImageUrl { get; set; }
public decimal ItemPrice { get; set; }
}
// GET: api/Sets
[Route("api/sets/{setid}")]
public IQueryable<SetDetails> GetDetails(string setid)
{
var sd = from a in db.Sets
where a.SetID.Contains(setid)
select new SetDetails
{
ItemDescription = a.ItemDescription,
ItemName = a.ItemName,
ItemUrl = a.ItemUrl,
ItemImageUrl = a.ItemImageUrl,
ItemPrice = a.ItemPrice
};
return sd.AsQueryable();
}
这是WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "PreppApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling =
Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
}
}
与其附加查询字符串参数,不如让WebApi路由将其从URL 的最后一部分中提取出来
$.getJSON("/api/sets/" + setid);