我创建了一个名为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
编辑:
对于Umbraco中的AngularJs控制器/资源,只需执行以下操作:
更改
$.get('~/Umbraco/AreaName/FormDatasource/GetAllCountries', null)
至
$.get('AreaName/FormDatasource/GetAllCountries', null)
这应该让你的电话工作。忽略~/Umbraco/
位。
您的API调用应该是:
~/Umbraco/AreaName/FormDatasource/GetAllCountries
请参阅https://our.umbraco.org/documentation/Reference/Routing/WebApi/#plugin-based-controller上的“基于插件的控制器”。
注意,如果你继承自'UmbracoAuthorizedApiController'或'UmbracoAuthorizedJsonController'你的api调用应该是这样的:
~/Umbraco/backoffice/AreaName/FormDatasource/GetAllCountries
有关更多信息,请查看Backoffice控制器下的文档站点中此页面的底部:
https://our.umbraco.org/documentation/Reference/Routing/WebApi/