Asp.net DirectoryBrowser功能,如何控制排序?

Fox*_*loy 1 asp.net-core

我有一个 asp.net core webapp,它使用我的目录浏览器功能设置,Startup.cs如下所示。

app.UseDirectoryBrowser(new DirectoryBrowserOptions
    {
        FileProvider = new PhysicalFileProvider(
     Path.Combine(Directory.GetCurrentDirectory(), "youtubeDLs")),
        RequestPath = "/Downloads"
    });
Run Code Online (Sandbox Code Playgroud)

我将其表面化为这样的部分。

<div id="dynamicContentContainer"></div>
<script>
    setTimeout(function () {
        $("#dynamicContentContainer").load("/Downloads")
    }, 2800);

</script>
Run Code Online (Sandbox Code Playgroud)

这太棒了,我有我想要的文件浏览器,它很可爱。

在此输入图像描述

但是,我对文件排序没有任何控制权,我喜欢对DateModified或上的文件进行排序DateCreated

我在 MSDN 上搜索了API Catalog ,但没有找到任何内容。难道这只是我无法控制的事情吗?

jan*_*ybs 7

你可以简单地覆盖HtmlDirectoryFormatter

public class SortedHtmlDirectoryFormatter : HtmlDirectoryFormatter
{
    public SortedHtmlDirectoryFormatter(HtmlEncoder encoder) : base(encoder) { }

    public override Task GenerateContentAsync(HttpContext context, IEnumerable<IFileInfo> contents)
    {
        var sorted = contents.OrderBy(f => f.LastModified);
        return base.GenerateContentAsync(context, sorted);
    }
}
Run Code Online (Sandbox Code Playgroud)

并在您的应用程序中使用它:

app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
    FileProvider = staticPathProvider,
    RequestPath = "/Downloads",
    Formatter = new SortedHtmlDirectoryFormatter(HtmlEncoder.Default)
});
Run Code Online (Sandbox Code Playgroud)