找不到插件区域中的UmbracoApiController

时间:2018-03-01 11:49:00

标签: umbraco umbraco7

我创建了一个名为 FormDatasourceController 的UmbracoApiController,它驻留在我的插件区域,用于在ajax调用中获取或发布数据。

[PluginController("AreaName")]
public class FormDatasourceController : UmbracoApiController
{        
    [HttpGet]
    public IEnumerable<ICountry> GetAllCountries()
    {
        return MerchelloConfiguration.Current.MerchelloCountries().Countries;
    }
}

在cshtml文件中我有这个请求

<script type="text/javascript">
$(function(){
    $('#sbmtBtn').on("click", function () {            
        $.get('~/Umbraco/AreaName/FormDatasource/GetAllCountries', null)
            .success(function (data) {
                alert(data);
            })
            .fail(function (e) {
                alert('failed' + e);
            });
});
});

但是,我总是得到错误状态404.我尝试使用EnableCors但没有运气。

有什么建议吗?我正在使用umbraco 7

1 个答案:

答案 0 :(得分:0)

修改:

对于Umbraco中的AngularJs控制器/资源,只需执行以下操作:

变化

$.get('~/Umbraco/AreaName/FormDatasource/GetAllCountries', null)

$.get('AreaName/FormDatasource/GetAllCountries', null)

这应该让你的电话工作。忽略~/Umbraco/位。

您的API调用应该是:

~/Umbraco/AreaName/FormDatasource/GetAllCountries

参见&#34;基于插件的控制器&#34;在https://our.umbraco.org/documentation/Reference/Routing/WebApi/#plugin-based-controller

注意,如果您继承自&umbracoAuthorizedApiController&#39;或者&#39; UmbracoAuthorizedJsonController&#39;你的api电话应该是这样的:

~/Umbraco/backoffice/AreaName/FormDatasource/GetAllCountries

有关详细信息,请查看Backoffice控制器下文档站点中此页面的底部:

https://our.umbraco.org/documentation/Reference/Routing/WebApi/