.Net Core Получить результат json из другого действия контроллера и преобразовать строку json в объект c # - PullRequest
1 голос
/ 13 марта 2019

У меня есть действие контроллера, которое возвращает JsonResult следующим образом:

[HttpPost]
    public ActionResult GetTotal(int AccountId)
    {
        Account account=context.Accounts.FirstOrDefault(s=>s.Id=AccountId);

        theTotal=account.Sum(s=>.Amount);

        return Json(theTotal);
    }

Вышеуказанное действие возвращает сумму в функцию Ajax. Однако в некоторых случаях я хочу получить сумму в другом действии контроллера для дальнейших вычислений, прежде чем вызывать возвращаемое представление в действии.

Как получить результат json в другом действии контроллера из вышеприведенного действия? Заранее спасибо.

1 Ответ

1 голос
/ 13 марта 2019

Создайте общий сервис для повторного использования логики:

public class MyAccountService{
    private AppDbContext _context;

    public MyAccountService(AppDbContext context){
        this._context = context;
    }
    public int GetTotal(int AccountId){
        Account account=this._context.Accounts.FirstOrDefault(s=>s.Id=AccountId);
        return account.Sum(s=>s.Amount);
    }
} 

зарегистрируйте его как сервис с определенными областями.

services.AddDbContext<AppDbContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("AppDbContext")))
services.AddScoped<MyAccountService>();

И добавьте эту услугу в свои контроллеры так, как вам нужно:

public class A1Controler :{

   private AccountService _accountService

   public A1Controller(MyAccountService accountService){
       this._accountService=accountService;
   }

   [HttpPost]
    public ActionResult GetTotal(int AccountId)
    {
        var theTotal=this._accountService.GetTotal(AccountId);

        return Json(theTotal);
    }
}

Если у вас есть еще A2Controller, просто сделайте то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...