2010-01-22 2 views
13

Se uso la seguente linea a mio avviso default/Home/Indiceproblema con Url.Content in ASP.NET MVC sulla Route predefinito

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

Se navigo in questa posizione utilizzando il seguente URL http : //127.0.0.1: 9999/Home/Indice la pagina viene resa correttamente

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

Se uso il seguente URL http : //127.0.0.1: 9999/(default collegato alla Home/Indice) la pagina esegue il rendering:

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

Qualcuno ha qualche idea su come risolvere questo problema?

EDIT:

FYI: Sto usando ASP.NET MVC 2 RC E questa è la mia configurazione di percorso:

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

scusa ma non riesco a riprodurre questo comportamento. potresti postare il contenuto della tua procedura RegisterRoutes() e quale versione di asp.net mvc stai usando? –

+0

Come dice Marc, questo non dovrebbe accadere. Non riesco nemmeno a riprodurlo. – mare

risposta

0

Ho avuto un problema molto simile con Asp.net utilizzando Request. ApplicationPath ... e avvolto come segue

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

    } 
1

Se si utilizza IIS6 o WinXP Cassini è necessario registrarsi più una via:

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

Perché stai mantenendo il tuo ID come stringa vuota? Penso che questo potrebbe causare il problema. Si possono trovare migliori risultati per provare il seguente:

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

a questo

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

Beh, in alternativa, è possibile effettuare le seguenti operazioni:

creare una chiave nella sezione appSettings del file web.config .

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

Ora, ogni volta che si desidera assegnare il valore "src" di qualsiasi immagine, JavaScript del file CSS, è possibile utilizzare questa chiave. sarà definita una root per te e dopo potrai definire in quale percorso hai posizionato il tuo file. nel tuo caso:

<script language="javascript" src="<%=System.Configuration.ConfigurationManager.AppSettings["DomainName"] %>Scripts/jquery-1.3.2.js" type="text/javascript" ></script>