2010-01-06 44 views
0

我有这样的代码在我的ASP.NET MVC项目的母版页:ASP.NET MVC和回复于母版页

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 

则:

<% 
    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; 
    } 
%> 

当我直接嵌入它可以工作,但是当我嵌入switch语句时,它不会从视图中找到位置,但会在起始页面上找到它。

如何映射路径以便从任何地方找到路径?

回答

1

我想我宁愿看到控制器,并通过作为一个模型属性的样式做出的决定。你可以很容易地测试它,你的标记会更清晰。

0

“./”表示“来自当前目录”。只需使用相对于应用程序根目录的路径,从斜线开始。

Response.Write("<link href=\"/Content/Site_FF.css\" ... 
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

我发现这一个:

Response.Write("<link href=\""+Page.ResolveClientUrl("~/Content/Site_IE.css")+"\" rel=\"stylesheet\" type=\"text/css\" />");