json - .Net Core 从另一个控制器操作中获取 json 结果并将 json 字符串转换为 c# 对象
问题描述
我有一个控制器动作,它返回 JsonResult 如下:
[HttpPost]
public ActionResult GetTotal(int AccountId)
{
Account account=context.Accounts.FirstOrDefault(s=>s.Id=AccountId);
theTotal=account.Sum(s=>.Amount);
return Json(theTotal);
}
上述操作将 Total 返回到 Ajax 函数。但是,在少数情况下,我想在另一个控制器操作中获取总数以进行进一步计算,然后再调用操作中的返回视图。
我如何从上述动作中获取另一个控制器动作的 json 结果?提前致谢。
解决方案
创建一个公共服务以重用逻辑:
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
,只需进行相同的注射。
推荐阅读
- python - conda 更新 conda,崩溃
- batch-file - Windows 命令提示符中的 if command -> set -> echo 出现问题
- python - Python,检测是否重复进程正在运行
- multithreading - mod_wsgi 中的服务器发送事件 (SSE) 阻塞线程
- jquery - 无法关闭移动设备上的下拉菜单
- image - Scrapy不下载图像
- reactjs - 如何在 WebStorm 中调试 React 应用程序?
- c++ - 使用 static_cast 来实现动态多态性
- reactjs - 如何在使用反应钩子时初始化第三方库?
- android - 如果我想用语音和画布在屏幕上记录整个屏幕活动以通过触摸写任何东西,该研究什么?