При запуске проекта Abp
создает все методы из слоя ApplicationService
и вы можете использовать его. Вам не нужно снова создавать метод в контроллере.
Вот пример того, что я говорю
У меня есть ApplicationServie
метод, подобный этому
public class CiudadAppService : AsyncCrudAppService<AdozonaCiudad, CiudadDto, int, PagedAndSortedRequest, CiudadDto, CiudadDto>, ICiudadAppService
{
private readonly ICiudadManager _ciudadManager;
public CiudadAppService(IRepository<AdozonaCiudad> repository, ICiudadManager ciudadManager) : base(repository)
{
_ciudadManager = ciudadManager;
}
public override async Task<CiudadDto> CreateAsync(CiudadDto input)
{
var result = await _ciudadManager.RegistrarOActualizar(ObjectMapper.Map<AdozonaCiudad>(input));
return MapToEntityDto(result);
}
}
В этом AppService
у меня есть один метод с именем CreateAsync
, этот метод можно использовать из javascript следующим образом.
(function ($) {
var _ciudadService = abp.services.app.ciudad;
var _$form = $('form[name=Index]');
function save() {
_$form.validate({
invalidHandler: function (form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var firstInvalidElement = $(validator.errorList[0].element);
$('html,body').scrollTop(firstInvalidElement.offset().top - 100);
firstInvalidElement.focus();
}
},
rules: {
Ciudad: "required"
},
messages: {
Ciudad: "El valor del campo es requerido"
},
highlight: function (element) {
$(element).parent().addClass('error-validation')
},
unhighlight: function (element) {
$(element).parent().removeClass('error-validation')
}
});
if (!_$form.valid()) {
return;
}
var ciudad = _$form.serializeFormToObject(); //serializeFormToObject is defined in main.js
abp.ui.setBusy(_$form);
_ciudadService.create(ciudad).done(function () {
location.reload(true); //reload page to see edited role!
abp.notify.success('Registro correcto');
$(".save-button").html('Guardar');
}).always(function () {
abp.ui.clearBusy(_$form);
});
}
}
Как вы видите, важная часть: var _ciudadService = abp.services.app.ciudad;
с этим вы создаете сервис и можете получить доступ ко всем методам, которые у вас есть в ApplicationService
Я надеюсь, что это может помочь вам, если вам нужна дополнительная помощь, пожалуйста, оставьте комментарий!