如何在ASP.NET MVC中提供favicon.ico的最终/最佳建议是什么?
我目前正在做以下事情:
在RegisterRoutes方法的最开头添加一个条目:
routes.IgnoreRoute("favicon.ico");
将favicon.ico放在我的应用程序的根目录中(这也将是我的域的根目录).
我有两个问题:
有没有办法把favicon.ico放在除我的应用程序的根之外的某个地方.在Content
和他们处于同一水平的地方真是太狡猾了Controllers
.
这个IgnoreRoute("favicon.ico")
陈述是否足够 - 或者我应该如Phil Haack的博客文章中所讨论的那样做.我不知道曾经在根目录以外的任何目录中看到过favicon.ico的请求 - 这会使这个变得不必要(但知道如何去做是很好的).
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
AlexC.. 222
我同意Chris的回答,但看到这是一个特定的ASP.NET MVC问题,最好使用Razor语法:
或者传统上
"/>
而不是
总是很方便得到一个没有模棱两可的剪切工作.谢谢. (10认同)
真正.我的回答是说明了"通用"版本(HTML),所以任何人都可以修改以适应他们选择的框架/语言:) (3认同)
使用MVC 4,在这种情况下你不需要Url.Content,因为它会自动处理,你可以使用; (3认同)
@Diego - 是的,rel ="SHORTCUT ICON"是Internet Explorer使用的非标准实现.该空间是W3C标准中的分隔符(请参阅https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link).在Internet Explorer以外的浏览器中,正确的语法是 - 请参阅http://www.jonathantneal.com/blog/understand-the-favicon/更多.显然,您可以使用Razor或Web窗体语法作为上面图标的路径. (2认同)
Chris.. 197
将favicon.ico放在域的根目录中只会影响IE5,IIRC.对于更现代的浏览器,您应该能够包含指向另一个目录的链接标记:
您还可以将非ico文件用于IE以外的浏览器,我可以使用以下条件语句为PNG等提供服务,以及向IE提供ICO:
您需要使用@ Url.Content生成链接,以便它适用于所有环境.请参阅AlexC的回复 (24认同)
是的,对于ASP.NET.我的回答说明了"通用"版本(纯HTML),所以任何人都可以修改以适应他们选择的框架/语言:) (5认同)
IE11了解PNG favicon并不需要条件语句.你应该看到这篇好文章:http://www.jonathantneal.com/blog/understand-the-favicon/ (2认同)
Eduardo Camp.. 20
1)您可以将您的favicon放在您想要的位置,并将此标签添加到您的页面头部
虽然某些浏览器默认会尝试从/favicon.ico获取favicon,因此您应该使用IgnoreRoute.
2)如果浏览器在另一个目录中请求了favicon,它将收到404错误,如果您在主页面的答案1中有链接标记,浏览器将获得您想要的favicon.
我同意Chris的回答,但看到这是一个特定的ASP.NET MVC问题,最好使用Razor语法:
或者传统上
"/>
而不是
将favicon.ico放在域的根目录中只会影响IE5,IIRC.对于更现代的浏览器,您应该能够包含指向另一个目录的链接标记:
您还可以将非ico文件用于IE以外的浏览器,我可以使用以下条件语句为PNG等提供服务,以及向IE提供ICO:
1)您可以将您的favicon放在您想要的位置,并将此标签添加到您的页面头部
虽然某些浏览器默认会尝试从/favicon.ico获取favicon,因此您应该使用IgnoreRoute.
2)如果浏览器在另一个目录中请求了favicon,它将收到404错误,如果您在主页面的答案1中有链接标记,浏览器将获得您想要的favicon.
我认为favicon.ico应该在根文件夹中.它就属于那里.
如果你想要不同的图标 - 把它放在控制器中.你可以做到这一点.如果不是 - 只需将其保留在根文件夹中即可.