2010-10-05 4 views
0

IntroAjout paramètre url supplémentaire provoque une erreur jquery

Je développe un projet avec MVC.Net. Je viens de démarrer un site Web par défaut avec un Home Controller et une action Index. Je navigue à la vue avec 'Home/Index/1' et tout fonctionne bien.

Maintenant, je veux ajouter un paramètre url supplémentaire, donc j'ai changé mon global.asax et a ajouté un paramètre foo:

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

Sur la page J'ai aussi un peu de jquery. Par exemple ce script:

<script type="text/javascript"> 
    $(document).ready(
     function() 
     { 
     }); 
</script> 

Problème

Mais maintenant, quand je navigue sur ma page avec 'Accueil/Index/1/1' J'obtiens une erreur javascript:

Microsoft JScript Erreur d'exécution: Objet attendu

Lorsque je navigue sur la page avec 'Home/Index/1' tout fonctionne correctement. Il y a probablement un problème avec mon routage d'URL, mais je n'ai aucune idée de ce que je fais de mal.

+0

Pouvez-vous modifier votre question et d'inclure la vue code? Cela pourrait aider. –

Répondre

0

La cause du problème est votre emplacement source du script. Je suppose que votre source de script est ../../Scripts/jquery.js, ce qui est toujours créé par l'application lorsque vous joignez un fichier js dans votre page.

Expliqué.

js file mapped in `../../Scripts/jquery.js` 
Page is `Home/Index/1/1` 
js real content is placed in `/Scripts` 
when the parser looks for the js it looks in `/Home/Scripts` 
which is not where it where it is. Since ../.. = /Home in Home/Index/1/1 

Ma suggestion est

<% 
string baseUrl = "http://" + Request.Url.Host + (Request.Url.Port != 80 ? ":" + Request.Url.Port.ToString() : ""); 
$> 
<script type="text/javascript" language="javascript" src="<%=baseUrl %>/Scripts/jquery-1.4.1.js"></script> 

Cela va aussi à vos fichiers CSS inclus dans votre page. Mais pour les liens CSS vous ne mettez pas " dans votre href attribut de la balise <link>

liés à ma réponse à here

+0

Merci pour votre réponse rapide! C'est la solution. – Thomas

1

Vous pouvez également utiliser la syntaxe suivante pour forcer la résolution du chemin

< script src = "<%: Url.Content ("~/scripts/jquery-1.4.1.js")%>" type = "text/javascript">

+0

Url.Content ("~/Foldername/Filename") est toujours une bonne pratique à utiliser lorsque vous incluez tout type de contenu et de scripts. – Webking

Questions connexes