gpt4 book ai didi

c# - 如何显示在 Asp.net MVC 中找不到的图像

转载 作者:太空狗 更新时间:2023-10-29 21:19:42 24 4
gpt4 key购买 nike

我有一个 asp.net mvc 项目。在特定的 View 中,我调用了我项目中不同文件夹中的四个图像。

有时候找不到图片。我想为每个文件夹设置一个图像,因为所有 4 个文件夹都包含不同尺寸的图像,所以我需要为每个文件夹设置特定尺寸的图像。

当找不到图像时我如何显示默认图像。我的意思是当目录没有我在 View 中调用的图像时调用 none.png。

在找不到图像的情况下,他们是否以任何方式显示图像。

在 asp.net 4 MVC 3 中使用 web.config 或设置任何其他内容的任何方式。

最佳答案

最简单的方法是使用 html 帮助程序。请注意在显示图像文件名之前检查文件系统的额外性能损失。虽然命中很小,因此除非您获得非常高的流量,否则您不会注意到任何问题。然后您可以实现某种缓存,以便应用“知道”文件是否存在。

你可以为它使用一个自定义的 html 助手

public static class ImageHtmlHelpers
{
public static string ImageUrlFor(this HtmlHelper helper, string contentUrl)
{
// Put some caching logic here if you want it to perform better
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
if (!File.Exists(helper.ViewContext.HttpContext.Server.MapPath(contentUrl)))
{
return urlHelper.Content("~/content/images/none.png");
}
else
{
return urlHelper.Content(contentUrl);
}
}
}

然后在您看来,您可以使用以下方式制作网址:

<img src="<% Html.ImageUrlFor("~/content/images/myfolder/myimage.jpg"); %>" />

编辑:正如 Jim 所指出的,我还没有真正解决大小问题。我个人使用自动大小请求管理/大小,这完全是另一回事,但如果您担心文件夹/大小,只需传递该信息以构建路径。如下:

public static class ImageHtmlHelpers
{
public static string ImageUrlFor(this HtmlHelper helper, string imageFilename, ImageSizeFolderEnum imageSizeFolder)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
string contentUrl = String.Format("~/content/userimages/{0}/{1}", imageSizeFolder, imageFilename);
if (!File.Exists(helper.ViewContext.HttpContext.Server.MapPath(contentUrl)))
{
return urlHelper.Content(String.Format("~/content/userimages/{0}/none.png", imageSizeFolder));
}
else
{
return urlHelper.Content(contentUrl);
}
}
}

然后在您看来,您可以使用以下方式制作网址:

<img src="<% Html.ImageUrlFor("myimage.jpg", ImageSizeFolderEnum.Small); %>" />

如果文件夹是一个固定的集合,建议使用 Enum 来更好地进行编程控制,但这是一种快速而讨厌的方法,而不是如果文件夹是数据库生成的,则不能只使用字符串等的原因。

关于c# - 如何显示在 Asp.net MVC 中找不到的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5202073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com