ASP.NET MVC и Response.Write на главной странице - PullRequest
0 голосов
/ 07 января 2010

У меня есть этот код на главной странице проекта 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 ]

2 голосов
/ 07 января 2010

Попробуйте это:

     <%       
 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 голос
/ 07 января 2010

Я нашел это:

Response.Write("<link href=\""+Page.ResolveClientUrl("~/Content/Site_IE.css")+"\" rel=\"stylesheet\" type=\"text/css\" />");
1 голос
/ 07 января 2010

Думаю, я бы предпочел, чтобы это решение было принято в контроллере, а таблица стилей передавалась как свойство модели. Вы можете легко проверить это, и ваша разметка будет намного чище.

0 голосов
/ 07 января 2010

Да, сначала это была боль. Я написал сообщение в блоге о том, как обойти эту проблему , и даже выложил некоторый код для вспомогательных методов, которые можно пролистать с моего сайта.

0 голосов
/ 07 января 2010

"./" означает "из текущего каталога". Просто используйте путь относительно корня приложения, начиная с косой черты.

 Response.Write("<link href=\"/Content/Site_FF.css\"  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...