代码之家  ›  专栏  ›  技术社区  ›  Stefan Steiger Marco van de Voort

ASP.NET MVC和Response.Write在母版页中

  •  0
  • Stefan Steiger Marco van de Voort  · 技术社区  · 16 年前

    我的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语句时,它不会从视图中找到位置,而是在起始页上找到它。

    我怎样才能绘制出路径,让它从任何地方都能找到它?

    5 回复  |  直到 16 年前
        1
  •  1
  •   Mark    16 年前

    我想我宁愿看到在控制器和样式表中做出的决定作为模型属性传入。您可以很容易地测试它,并且您的标记会更干净。

        2
  •  2
  •   mdm20    16 年前

    试试这个:

         <%       
     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;
     } 
     %>
    
        3
  •  1
  •   Stefan Steiger Marco van de Voort    16 年前

    我找到了这个:

    Response.Write("<link href=\""+Page.ResolveClientUrl("~/Content/Site_IE.css")+"\" rel=\"stylesheet\" type=\"text/css\" />");
    
        4
  •  0
  •   womp    16 年前

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

     Response.Write("<link href=\"/Content/Site_FF.css\"  ...
    
        5
  •  0
  •   Mark Ewer    16 年前

    是的,刚开始很疼。 I wrote a blog post on how to get around this issue 我甚至为你可以从我的网站上刷到的助手方法设置了一些代码。