- ABP Framework version: v7.4.2
- UI Type: Blazor WASM
- Database System: EF Core (SQL Server)
- Tiered (for MVC) or Auth Server Separated (for Angular): no
- Exception message and full stack trace: none
- Steps to reproduce the issue:
- Create a new solution using Abp Suite.
- Create a new Entity called "Book" using Abp Suite and generate the code.
- Notice how the filters are present in the BookExcelDownloadDto, but in the razor page's code only the FilterText filter has been passed:
BookExcelDownloadDto.cs:
public class BookExcelDownloadDto
{
public string DownloadToken { get; set; } = null!;
public string? FilterText { get; set; }
public string? Title { get; set; }
public DateTime? PublishDateMin { get; set; }
public DateTime? PublishDateMax { get; set; }
public bool? InInventory { get; set; }
public BookExcelDownloadDto()
{
}
}
Books.razor.cs:
public partial class Books
{
// OTHER PAGE CODE HERE
private async Task DownloadAsExcelAsync()
{
var token = (await BooksAppService.GetDownloadTokenAsync()).Token;
var remoteService = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultOrNullAsync("ExcelTest") ??
await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultOrNullAsync("Default");
NavigationManager.NavigateTo($"{remoteService?.BaseUrl.EnsureEndsWith('/') ?? string.Empty}api/app/books/as-excel-file?DownloadToken={token}&FilterText={Filter.FilterText}", forceLoad: true);
}
// OTHER PAGE CODE HERE
}
5 Answer(s)
-
0
Hello roberto.fiocchi@mcsi.it ,
The issue you're encountering is that the
FilterText
property is the only one being passed to the URL when generating the Excel download link. This is because theDownloadAsExcelAsync
method only explicitly passes theFilterText
property. To include the other filter properties, you'll need to modify the method to explicitly pass them as well.Thanks,
-
0
Hello roberto.fiocchi@mcsi.it ,
The issue you're encountering is that the
FilterText
property is the only one being passed to the URL when generating the Excel download link. This is because theDownloadAsExcelAsync
method only explicitly passes theFilterText
property. To include the other filter properties, you'll need to modify the method to explicitly pass them as well.Thanks,
Hi, I think there might have been a misunderstanding, i was reporting a bug since it should be Abp Suite's job to add those filters when the code is generated like it does with the Page Filters. If i have an entity that has a lot of filters it would take me a while to add all of them manually, time that can be saved if automated with Abp Suite.
Also, is it not wiser to use a POST request rather then a GET because the query parameters in a GET requests has a 2048 character limit and could possibly go over if i have enough filters?
-
0
Hi, yes you are right the other filters should also be passed to the parameter and the filtering should work for them as well. I have created an internal issue (#15729) for this and will fix it asap.
Also, is it not wiser to use a POST request rather then a GET because the query parameters in a GET requests has a 2048 character limit and could possibly go over if i have enough filters?
I understand your intent but since we are getting a result back and not adding or updating any record to a datastore, and instead just collecting the result and returning it GET request seems more proper, according to REST API guides.
-
0
Hi, yes you are right the other filters should also be passed to the parameter and the filtering should work for them as well. I have created an internal issue (#15729) for this and will fix it asap.
Also, is it not wiser to use a POST request rather then a GET because the query parameters in a GET requests has a 2048 character limit and could possibly go over if i have enough filters?
I understand your intent but since we are getting a result back and not adding or updating any record to a datastore, and instead just collecting the result and returning it GET request seems more proper, according to REST API guides.
Hi, Thanks so much for the help and understanding! We'll wait for the fix.
P.S: We don't know if its intended but we also noticed that with ABP 7.4.2 under HttpApi project a "TestModel.cs" is created when initializing the project with Abp Suite
-
0
P.S: We don't know if its intended but we also noticed that with ABP 7.4.2 under HttpApi project a "TestModel.cs" is created when initializing the project with Abp Suite
Thanks for noting this, I have taken note of this one too.