我在ASP.NET MVC项目母版页中有这段代码:
<%
switch(Request.Browser.Browser)
{
case "IE": // Internet Explorer
Response.Write("<link href=\"./Content/Site_IE.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
case "AppleMAC-Safari": // Chrome
Response.Write("<link href=\"./Content/Site_FF.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
case "Firefox": // Firefox
Response.Write("<link href=\"./Content/Site_FF.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
default: // All others
Response.Write("<link href=\"./Content/Site_FF.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
}
%>
当我直接嵌入:
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
然后它可以工作,但是当我使用switch语句嵌入时,它没有从视图中找到位置,但它在起始页面上找到它。
如何映射路径以便从任何地方找到它?
答案 0 :(得分:2)
试试这个:
<%
switch(Request.Browser.Browser)
{
case "IE": %> // Internet Explorer
<link href="<%= Url.Content ("~/Content/Site_IE.css") %>" rel="stylesheet" type="text"/css" />
<% break;
case "AppleMAC-Safari": %> // Chrome
<link href="<%= Url.Content ("~/Content/Site_FF.css") %>" rel="stylesheet" type="text"/css" />
<% break;
case "Firefox": %> // Firefox
<link href="<%= Url.Content ("~/Content/Site_FF.css") %>" rel="stylesheet" type="text"/css" />
<% break;
default: %> // All others
<link href="<%= Url.Content ("~/Content/Site_FF.css") %>" rel="stylesheet" type="text"/css" />
<% break;
}
%>
答案 1 :(得分:1)
我想我宁愿看到在控制器中做出的决定和作为模型属性传递的样式表。你可以轻松测试它,你的标记会更清晰。
答案 2 :(得分:1)
我找到了这个:
Response.Write("<link href=\""+Page.ResolveClientUrl("~/Content/Site_IE.css")+"\" rel=\"stylesheet\" type=\"text/css\" />");
答案 3 :(得分:0)
“./”表示“从当前目录”。只需使用相对于应用程序根目录的路径,从斜杠开始。
Response.Write("<link href=\"/Content/Site_FF.css\" ...
答案 4 :(得分:0)
是的,起初这是一种痛苦。 I wrote a blog post on how to get around this issue我甚至为你可以从我的网站刷卡的帮助方法提供了一些代码。