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

标签 c# asp.net-mvc web-config default imagesource

我有一个 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/

相关文章:

c# - 自定义配置部分 .NET

c# - 启动新进程

c# - 确保尽早加载(某些)引用的程序集

asp.net-mvc - 如果我在操作定义中使用异步任务,该操作是否应该与异步相关?

asp.net - System.IdentityModel.Tokens.ValidatingIssuerNameRegistry 的配置问题

c# - 尽管定义了文件属性,但键值对已添加到 web.config 文件中

c# - Unity Engine - 通过碰撞实例化预制件

c# - LinqToXML : Getting elements with given value

javascript - 如何使用 window.open() 下载文件

c# - 在 web.config 上设置 AD 角色名称