根据日期差异隐藏项目

时间:2016-05-19 02:28:42

标签: javascript jquery asp.net-mvc bootstrap-modal

我有一个通过模态打开的文件列表。我想要的是它应该在文件生成30天后隐藏文件。

这是显示文件的代码

 <table>
                @foreach (FileInfo res in Model.PDFFile)
                {
                    <tr>
                        <td>@res.Name.Splitter('_', 1)</td>
                        <td>
                            <a data-toggle="modal" href="#testmodal@(res.Name.Splitter('_', 0))">View Result</a>
                            <div class="modal fade" id="testmodal@(res.Name.Splitter('_', 0))" role="dialog" tabindex="-1">
                                <div class="modal-dialog modal-lg">
                                    <div class="modal-content">
                                        <div class="modal-header">
                                            <button type="button" class="close" data-dismiss="modal" data-toggle="tooltip" title="Close"><span class="glyphicon glyphicon-remove"></span></button>
                                        </div>
                                        <div class="modal-body">
                                            <embed src="~/Files/@res.Name" width="850" height="1000" type="application/pdf" />
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </td>
                    </tr>
                }
    </table>

这是控制器:

 public ActionResult Index()
    {
        ResultModel rmodel = new ResultModel();
        string path = Server.MapPath("~/Files/");
        DirectoryInfo dir = new DirectoryInfo(path);
        rmodel.PDFFile = dir.GetFiles("*.pdf*");
        return View(rmodel);

    }

文件名包含文件的日期。你知道怎么在javascript中这样做吗?谢谢!

1 个答案:

答案 0 :(得分:1)

没有必要将所有文件发送到视图,然后将它们隐藏在视图中(您可能会为数百个文件生成html,但只显示几个),您应该只在控制器中过滤它们。此外,还不清楚为什么需要在文件名本身中包含日期,因为FileInfo包含DateTime CreationTime属性,您可以根据文件上载的日期进行过滤。 / p>

过滤控制器中的文件

public ActionResult Index()
{
    DateTime minDate = DateTime.Today.AddDays(-30);
    string path = Server.MapPath("~/Files/");
    DirectoryInfo dir = new DirectoryInfo(path);
    ResultModel rmodel = new ResultModel()
    {
        PDFFile = dir.GetFiles("*.pdf*").Where(x => x.CreationTime > minDate);
    };
    return View(rmodel);
}

假设您从文件名中删除了日期,那么您只需将一组文件名传递给视图,而不是FileInfo的集合,例如

ResultModel rmodel = new ResultModel()
{
    PDFFile = dir.GetFiles("*.pdf*")
       .Where(x => x.CreationTime > minDate).Select(x => x.Name);
};

其中PDFFileIEnumerable<string>而非IEnumerable<FileInfo>(虽然不清楚您的Splitter()扩展方法实际上在做什么)