2010-01-22 3 views
13

Если я использую следующую строку на мой взгляд, по умолчанию/Home/IndexПроблема с Url.Content в ASP.NET MVC по умолчанию Route

<script language="javascript" src="<%=Url.Content("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript" ></script> 

Если я серфинга в этом месте, используя следующий URL HTTP : //127.0.0.1: 9999/Home/Index страница получает отображается правильно

<script language="javascript" src="/Scripts/jquery-1.3.2.js" type="text/javascript" ></script> 

Если я использую следующий URL HTTP: //127.0.0.1: 9999/(по умолчанию подключен к домашней/Index) страница делает это:

<script language="javascript" src="//Scripts/jquery-1.3.2.js" type="text/javascript" ></script> 

Кто-нибудь знает, как решить эту проблему?

EDIT:

FYI: Я использую ASP.NET MVC 2 RC И это моя конфигурация маршрута:

routes.MapRoute(
"Default",            // Route name 
"{controller}/{action}/{id}",       // URL with parameters 
new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
); 
+1

извините, но я не могу воспроизвести это поведение. не могли бы вы разместить содержимое своей процедуры RegisterRoutes() и какую версию asp.net mvc вы используете? –

+0

Как говорит Марк, этого не должно быть. Я тоже не могу воспроизвести его. – mare

ответ

0

У меня была очень похожая проблема с Asp.net с помощью запроса. ApplicationPath ... и завернул его следующим образом

public string AppRoot() 
    { 
     var appPath = Request.ApplicationPath; 
     if (appPath.EndsWith("/")) 
      return appPath; 
     else 
      return appPath + "/"; 

    } 
1

Если вы используете IIS6 или WinXP Кассини вы должны зарегистрировать еще один маршрут:

if (Environment.OSVersion.Version.Major < 6) // IIS6 and WinXP Cassini 
     { 
      routes.MapRoute(
       "Root", 
       "", 
       new 
        { 
         controller = "Home", 
         action = "Index", 
         id = UrlParameter.Optional 
        } 
       ); 
     } 
0

Почему вы храните свой id как пустую строку? Я думаю, что это может вызвать проблемы. Вы можете найти лучшие результаты, пытаясь следующее:

routes.MapRoute(
"Default",            // Route name 
"{controller}/{action}/{id}",       // URL with parameters 
new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
); 

к этому

routes.MapRoute(
"Default",            // Route name 
"{controller}/{action}/{id}",       // URL with parameters 
new { controller = "Home", action = "Index", UrlParameter.Optional } // Parameter defaults 
); 
0

Ну, в качестве альтернативы вы можете сделать следующее:

создать ключ в AppSettings секции файла web.config ,

<add key="DomainName" value="http://http://127.0.0.1:9999/" /> 

Теперь, когда вы хотите назначить «Src» значение любого изображения, JavaScript в CSS файл, вы можете использовать этот ключ. он будет определять для вас корень, и после этого вы можете определить, на каком пути вы разместили свой файл. т. е. в вашем случае:

<script language="javascript" src="<%=System.Configuration.ConfigurationManager.AppSettings["DomainName"] %>Scripts/jquery-1.3.2.js" type="text/javascript" ></script> 
Смежные вопросы