我有一个OData v4
无法使用的动作方法;但是请注意,它的工作正常OData v3
(我显然正在尝试更新我的项目)
OData操作方法:
[HttpPost]
public Translation Translate(ODataActionParameters parameters)
{
// Implementation
}
组态:
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Page>("Pages");
//etc (Other Entity Sets)
var pageEntityType = builder.EntityType<Page>();
var translateAction = pageEntityType.Collection.Action("Translate");
translateAction.Parameter<Guid>("pageId");
translateAction.Parameter<string>("cultureCode");
translateAction.Returns<Translation>();
//etc (Other Actions)
var route = config.MapODataServiceRoute("OData_CMS", "odata/cms", builder.GetEdmModel());
客户AJAX呼叫:
var data = {
pageId: $("#CultureSelector_PageId").val(),
cultureCode: $("#CultureSelector_CultureCode").val()
};
$.ajax({
url: "/odata/cms/Pages/Translate",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
dataType: "json",
async: false
})
.done(function (json) {
//etc
我试图查看有关版本4中的OData操作的设置是否发生了任何变化,但似乎是相同的(请参阅:使用ASP.NET Web API 2.2的OData v4中的操作和函数)
编辑
我发现OData v4
使用Default
命名空间并实现了该命名空间,如下所示:
首先,只需将我的AJAX调用更改为:
url: "/odata/cms/Pages/Default.Translate",
那没有用,所以我还补充说:
[ODataRoute("Default.Translate")]
和
[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)]
请按照此链接上的说明进行操作:http : //damienbod.wordpress.com/2014/06/16/web-api-and-odata-v4-crud-and-actions-part-3/。
也不起作用。.我已经按照步骤操作...要么我是盲目丢失了这里的内容,要么是最新版本的OData
for存在严重问题Web API
。
好吧,在提出这个问题将近一年之后,我实际上再次尝试迁移到OData v4并遇到了同样的问题。我在这里忘记了最初的问题,问了一个新问题,然后找到了答案。有关更多详细信息,请参见OData v4函数始终返回404。我很高兴地说现在一切都很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句