在ASP.NET MVC中提供favicon.ico
ASP.NET MVC中如何提供favicon.ico的最终/最佳建议是什么?
我目前正在执行以下操作:
在我的RegisterRoutes方法的最开始添加一个条目:
routes.IgnoreRoute("favicon.ico");
将favicon.ico放置在我的应用程序的根目录下(这也将成为我的域的根)。
我有两个问题:
Content
和Controllers
的相同级别上,它非常恶劣。 这是IgnoreRoute("favicon.ico")
声明是否足够 - 或者我也应该按照Phil Haack的博客文章所述进行以下操作。 我没有意识到在任何根目录以外的任何目录中看到过对favicon.ico的请求 - 这会使得这不需要(但知道如何去做)是很好的。
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
将favicon.ico放置在您的域的根目录下只会影响IE5,IIRC。 对于更现代的浏览器,您应该可以包含链接标记以指向另一个目录:
<link rel="SHORTCUT ICON" href="http://www.mydomain.com/content/favicon.ico"/>
你也可以使用IE以外浏览器的非ico文件,为此我可以使用下面的条件语句将PNG提供给FF等,并将ICO提供给IE:
<link rel="icon" type="image/png" href="http://www.mydomain.com/content/favicon.png" />
<!--[if IE]>
<link rel="shortcut icon" href="http://www.mydomain.com/content/favicon.ico" type="image/vnd.microsoft.icon" />
<![endif]-->
我同意Chris的回答,但是看到这是一个特定的ASP.NET MVC问题,最好使用Razor语法:
<link rel="icon" href="@Url.Content("~/content/favicon.ico")"/>
或传统上
<link rel="icon" href="<%= Url.Content("~/content/favicon.ico") %>"/>
而不是
<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>
1)你可以把你的图标放在你想要的位置,并将这个标签添加到你的页面头部
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
尽管一些浏览器默认会尝试从/favicon.ico获取图标,因此您应该使用IgnoreRoute。
2)如果一个浏览器在另一个目录中发送一个favicon的请求,它会得到一个404错误,这很好,如果你的主页中的回答1中有链接标记,浏览器将获得你想要的图标。
链接地址: http://www.djcxy.com/p/61851.html上一篇: Serving favicon.ico in ASP.NET MVC
下一篇: ASP.NET MVC Areas: Are they important to a large application?