我正在使用 Visual Studio 模型,并且有一个“下载”页面,其中显示文件名、文件大小和链接。但是,我正在尝试将文件大小转换为可读格式。我已经找到了几种方法来做到这一点,但我认为我卡住的地方是如何将它合并到我已经使用的代码中。例如,我已经有一个 FileSize 变量,所以我想将它合并到转换代码中。这是模型本身的现有代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Web.Hosting;
namespace SupportToolkit.Models
{
public class DataClassesModel
{
public List<FileNames> GetFiles()
{
List<FileNames> lstFiles = new List<FileNames>();
DirectoryInfo dirInfo = new DirectoryInfo(HostingEnvironment.MapPath("~/Files"));
int i = 0;
foreach (var item in dirInfo.GetFiles())
{
lstFiles.Add(new FileNames()
{
FileId = i + 1,
FileName = item.Name,
FileSize = item.Length,
FilePath = dirInfo.FullName + @"\" + item.Name,
FileExtension = item.Extension
});
i = i + 1;
}
return lstFiles;
}
}
public class FileNames
{
public int FileId { get; set; }
public string FileName { get; set; }
public long FileSize { get; set; }
public string FilePath { get; set; }
public string FileExtension { get; set; }
}
}
我想在此处添加一些代码来转换为 KB、MB、GB 等 - 我有一个想法,但不知道如何将其合并到我已有的内容中。这是我要进行转换的示例:
public static string FileSizeFormat(this long FileSize)
{
double size = FileSize;
int index = 0;
for (; size > 1024; index++)
size /= 1024;
return size.ToString("0.00 " + new[] { "B", "KB", "MB", "GB", "TB" }[index]);
}
任何帮助将不胜感激!我对此很陌生,只是坚持如何将这两件事融合在一起。:)
谢谢你。
让我也添加 Index.html 中使用的代码,也许这将有助于完成循环。我想弄清楚如何让格式化的文件大小显示在这个页面上。谢谢你。
@using SupportToolkit.Models
@model IEnumerable<SupportToolkit.Models.FileNames>
@{
ViewBag.Title = "Index";
}
<h2>Downloads</h2>
<hr />
<table>
<tr>
<th>
File Name
</th>
<th>
File Size
</th>
</tr>
@foreach (var item in Model)
{
<tr >
<td>
@Html.DisplayFor(modelItem => item.FileName)
</td>
<td>
@Html.DisplayFor(modelItem => item.FileSize)
</td>
<td>
<p style="text-indent: 5em;">
@Html.ActionLink("Download", "Download", new { id = item.FileId })
</p>
</td>
</tr>
}
在这种情况下,我使用 @Html.DisplayFor(modelItem => item.FileSize) 来显示文件大小。但这不包括格式。我如何将其设为格式化文件大小(人类可读)?