ASPNET Core img src用于图像扩展的通配符

时间:2016-03-13 16:58:42

标签: c# asp.net asp.net-mvc razor kestrel-http-server

我已在我项目的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>
}

1 个答案:

答案 0 :(得分:0)

我不确定这是最好的方法,但是你也可以GetAll文件(在你的情况下应该只是一个文件)而不是找到扩展名

 var imagesDirectory = Server.MapPath("/Uploads/Images/" + item.ProductName);
 var files = Directory.GetFiles(imagesDirectory,"*"+item.ProductName+"*");

 var extension = Path.GetExtension(files[0]);