[英]Determine URL prior to routing in controller for asp.net core
I am developing an asp.net core site, and I have a controller class which gets data for an api that I am using (jquery datatable).
客户端控制器.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using GuptaAccounting.Data;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.Mvc;
namespace GuptaAccounting.Controllers
{
//Need to add the route so server knows which path/url to go to
[Route("api/Client")]
//State that this is an api controller
[ApiController]
public class ClientController : Controller
{
private readonly ApplicationDbContext _db;
public ClientController(ApplicationDbContext db)
{
_db = db;
}
[HttpGet]
public IActionResult GetAll()
{
return Json(new
{
data = _db.Client.Where(Client => Client.IsConsultationClient == false).ToList()
});
}
}
}
在路由到“api/client”之前,我需要知道我在站点上的位置,以便我可以在 GetAll function 中返回不同的数据(返回 IsConsultationClient == true 的客户端)。 我该怎么做? 我已经尝试过使用IHttpContextAccessor
并且我没有任何运气。
[编辑]
我正在从 js 文件进行 ajax 调用。 这是我的代码的一部分
dataTable = $('#DT_load').DataTable({ //need to make an ajax call using the api that i included "ajax": { "url": "/api/client", //this is a get request "type": "GET", "datatype": "json" },
也许这会奏效。
在 controller 中:
[HttpGet]
[MyRouter]
public IActionResult GetAll(bool isConsultationClient = false)
{
return Json(new
{
data = _db.Client
.Where(Client => Client.IsConsultationClient == isConsultationClient).ToList()});
}
}
在属性过滤器中:
public class MyRouterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.HttpContext.Request.Headers
.TryGetValue("IsConsultationClient", out var isConsultationClient))
{
if (isConsultationClient== "Yes")
context.ActionArguments.Add("isConsultationClient", true);
else if (isConsultationClient== "No")
context.ActionArguments.Add("isConsultationClient", false);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.