【问题标题】:MVC List Azure Blobs in view without container and pathMVC 在没有容器和路径的情况下列出 Azure Blob
【发布时间】:2017-12-13 23:50:18
【问题描述】:

我正在组建一个小型项目管理站点,用户可以在其中使用 Azure Blob 存储将相关文档上传到项目。

我可以上传、查看 blob 列表并下载 blob,但我想做的是在列表中显示 blob,而不包含所有容器和路径信息。

这里是 C#

        public ActionResult doclist(int projectid)
    {
        CloudConfigurationManager.GetSetting("StorageConnectionString", true);
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                CloudConfigurationManager.GetSetting("StorageConnectionString"));

        // Create the blob client.
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        // Retrieve reference to a previously created container.
        CloudBlobContainer container = blobClient.GetContainerReference(containername);

        List<CloudBlockBlob> blobs = new List<CloudBlockBlob>();

        //foreach (IListBlobItem item in container.ListBlobs(null, true))
        foreach (IListBlobItem item in container.ListBlobs((containername + "/" + projectid.ToString() + "/").ToString()))
        {
            CloudBlockBlob blob = (CloudBlockBlob)item;

            blobs.Add(blob);
        }
        return View(blobs);
    }

视图本质上只是一个简单的

                        @foreach (var item in Model)
                    {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelitem => item.Name)
                            </td>
                            <td>
                                @Html.DisplayFor(modelitem => item.Properties.Length)
                            </td>
                            <td>
                                @string.Format("{0:dd-MM-yyyy}", item.Properties.LastModified)
                            </td>
                            <td>
                                @Html.ActionLink("Download", "Download", "Projects", new { filename = item.Name}, new { @class = "btn btn-primary" })

                            </td>
                        </tr>
                    }

我最终得到一个 item.Name 值,例如 “容器/project1/document1.jpg” “容器/project1/document2.pdf”等

我只想展示 “document1.jog” "document2.pdf"

我在 HTML 中尝试了一个简单的替换,但我没有设法让它工作。

我还尝试在 C# 中摆弄 blob 数据以更改 URI,但不希望这影响我下载 blob 的方式。

我猜我在这里错过了一些非常简单的东西,但这是我第一次使用 Blob 存储等。

将此类数据写入数据库表并从那里检索是否会更好?

【问题讨论】:

    标签: c# asp.net-mvc azure blob


    【解决方案1】:

    试试

        @{
       var itemName = System.IO.Path.GetFileName(item.Uri.LocalPath);
         }
        @Html.DisplayFor(modelitem => itemName)
    

    【讨论】:

    • 您好 Naresh,感谢您的快速回复。这对我不起作用。我收到以下错误模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。
    • 您可以将表达式移动到一个变量中并在@Html 帮助器中使用该变量。它解决了这个错误
    • 纳雷什,完美。谢谢,效果很好。在 HTML 中操作东西还是很新的
    猜你喜欢
    • 2021-01-14
    • 2020-06-14
    • 2020-01-28
    • 1970-01-01
    • 2016-07-07
    • 2019-01-18
    • 2022-12-17
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多