【发布时间】:2016-03-13 16:58:42
【问题描述】:
我已经在我的项目的wwwroot 中上传了图片,它们的名称与产品的名称相匹配(存储在数据库中)。现在我想在我的视图中显示它们,但不知道它们的扩展名,因为用户将能够上传任何类型的图像文件。他们是否有任何通配符或任何其他技术来解决这个问题?我的代码是:
@foreach (var item in Model) {
<tr>
<td>
<img src="~/Uploads/Images/@(item.ProductName)/@(item.ProductName).png" alt="@(item.ProductName+" - "+item.ProductDescription)" />
@Html.DisplayFor(modelItem => item.Category.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductDescription)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductPrice)
</td>
<td>
@Html.DisplayFor(modelItem => item.QuantityOnHand)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.ProductID">Edit</a> |
<a asp-action="Details" asp-route-id="@item.ProductID">Details</a> |
<a asp-action="Delete" asp-route-id="@item.ProductID">Delete</a>
</td>
</tr>
}
【问题讨论】:
-
除了@esiprogrammer 的建议之外,您无能为力。无论如何,考虑一种不同的方法:当用户上传图像时,将稍后下载文件所需的信息存储在数据库中:(包括下载的文件名和扩展名)我通常有一个“上传”表,我在其中保存一个唯一的 id 和完整的文件名。之后,您需要将上传文件的 id 存储在 product 表中,并选择最佳的文件存储方式(所有文件在同一个文件夹中,一个文件夹用于 product 甚至将文件存储在 db blob 中)
-
谢谢@GianPaolo 会试一试。
标签: c# asp.net asp.net-mvc razor kestrel-http-server