使用下面的代码,我可以点击(使用Fiddler):
删除方法如下:
public IHttpActionResult Delete([FromODataUri] int key)
{
Console.WriteLine(key);
}
我点击了方法,我得到了密钥,没问题。
但我没有使用密钥点击get方法(没有密钥的get方法没问题,我得到完整列表):
// GET: odata/Customers(5)
public IHttpActionResult GetCustomer([FromODataUri] int key)
{
Console.WriteLine(key);
}
我收到此错误(通过Fiddler响应标头): HTTP / 1.1 404 Not Found
WebApiConfig是:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<CustomerModel>("Customers");
builder.EntitySet<EmployeeModel>("Employees");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
}
}
答案 0 :(得分:1)
方法名称需要由OData路由获取:
for (j in names(DTcars)) set(DTcars,
i = which(DTcars[[j]]>10),
j = j,
value = tail(DTcars[[j]],1)
)
答案 1 :(得分:0)
通过Web API OData约定,它应该支持以下两个规则:
约定#1的优先级高于约定#2。
根据惯例,如果您只在控制器中定义以下操作,则会获得 404-NotFound :
GetCustomer([FromODataUri] int key)
GetCustomers([FromODataUri] int key)
否则,如果在控制器中至少定义以下一个操作,它应该可以工作:
GetCustomerModel([FromODataUri] int key)
Get([FromODataUri] int key)
http://odata.github.io/WebApi/#03-02-built-in-routing-conventions列出了Web API OData中使用的路由约定。希望它可以帮到你。感谢。