我使用ASP.NET 4(Visual Studio 2010)MVC2架构创建了一个Web应用程序,并将其部署到虚拟目录EasyMan4中的本地IIS服务器上。现在使用解决方案资源管理器我已将图像添加到内容文件夹。在此之后,在Site.Master页面中,我添加了一个img标记,如下所示:
<img src="../../Content/HomeIcon.png" height="64" width="64" alt="Home" />
请注意,css文件的加载方式如下:
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
尽管.css和.png文件都位于同一位置,但在通过http://localhost/EasyMan4/
查看网站时,css会正确加载,而png则不会。
通过Visual Studio Development Server启动同一个项目,完美呈现了页面。但是,IIS无法正确显示图像。
仔细观察后,我发现虽然Chrome开发者工具中css文件的位置为http://localhost/EasyMan4/Content/site.css
,但图片的位置为http://localhost/Content/HomeIcon.png.
请注意,由于我不熟悉IIS管理器,因此我更改了IIS管理器中的任何内容,但更改IIS身份验证类型除外。目前,我已禁用除Windows身份验证之外的所有身份验证类型。请告知我应该怎么做以使图像正确显示
答案 0 :(得分:2)
im MVC开发人员可以告诉你,MVC是一个关于配置框架的约定,最佳实践是将所有文件放在正确的有序文件夹中。 例如,对于Images,您可以在Content目录中调用“Images”创建一个文件夹,并将图像放在那里,与CSS文件一样,放在“CSS”或“stylesheet”目录中。 然后使用MVC框架的强大帮助器。
对于图像使用
<img src="<%= Url.Content( "~/Content/Images/HomeIcon.png" ) %>" height="64" width="64" alt="Home" />
和样式表使用
<link href="<%= Url.Content( "~/Content/CSS/Site.css" ) %>" rel="stylesheet" type="text/css" />
这种方式允许在调试时和IIS中的Visual Studio中使用相同的行为
我希望答案对您有所帮助,如果解决您的问题,请将其标记为正确答案
CYA, 达里奥
答案 1 :(得分:0)
我建议您创建一些UrlHelper扩展方法,以便保持一致。这样您就可以知道图像,css和脚本文件的位置。注意使用代字号“〜”这意味着您的路径从应用程序的根开始。
public static class UrlHelperExtension
{
public static string Stylesheet(this UrlHelper helper, string fileName)
{
return helper.Content(String.Format("~/content/css/{0}", fileName));
}
public static string Image(this UrlHelper helper, string fileName)
{
return helper.Content(String.Format("~/content/images/{0}", fileName));
}
//More helpful methods ....
}
然后要访问它们,您可以在视图中执行以下操作
<img src="<%= Url.Image("HomeIcon.png") %>" alt="Home" />
<link href="<%= Url.Stylesheet("Site.css")%>" rel="stylesheet" type="text/css" />