我现在项目采用.Net Core 3.1运行时,我希望通过链接中不同的Query参数动态生成SQL,从而实现不同用户打开页面显示不同报表内容的效果。我在Controller中加入了Id参数:
[HttpGet("/{file}")]
public object Resource([FromRoute] string file, [FromQuery] string id)//我需要传递的query参数Id
{ ........}
我希望根据不同的Id,生成不同的SQL,并且使用这个SQL查询报表内容。
select * from user Where Id=12345所以我在Configure方法中添加了如下代码:app.UseReporting(settings =>
{
settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType()));
settings.UseCompression = true;
settings.LocateDataSource = args =>
{
var res = QueryItems("select * from user where Id=12345");//我不知道怎么传递query参数(id)到这边
return res;
};
});
private static DataTableCollection QueryItems(string sql)
{
var conn = new MySqlConnection(
"Server=127.0.0.1; Port=3306;Stmt=; Database=demodb; Uid=demo; Pwd=demo;");
var daCountry = new MySqlDataAdapter(sql, conn);
var dsCountry = new DataSet();
daCountry.Fill(dsCountry, "User");
var dataSet = dsCountry.Tables["User"?.DataSet;
return dataSet?.Tables;
}这样做虽然手动编写了SQL,但问题是我不知道怎么传递Route中的参数到UseReporting的 settings.LocateDataSource中,而且这个方法只会在程序自动的时候运行一次,并不能实现每一个http请求调用一次,请问下有没有什么解决方案?
|