2010-08-16 3 views
0

J'ai beaucoup de mal à utiliser l'infrastructure de routage de asp.net mvc2. J'ai routes suivantes enregistrées dans mon global.asax fichierCan .net mvc routing provoque des erreurs JavaScript?

routes.MapRoute(
       "strict", 
       "{controller}.mvc/{docid}/{action}/{id}", 
       new { action = "Index", id = "", docid = "" }, 
       new { docid = @"\d+"} 

      ); 
routes.MapRoute(
       "default", 
       "{controller}.mvc/{action}/{id}", 
       new { action = "Index", id = "" }, 
       new { docConstraint = new DocumentConstraint() } 
      ); 

Le problème est avec le premier itinéraire ("strict"). Trois types d'URL peuvent correspondre au premier itinéraire. mycontroller/23/myaction, mycontroller/23/myaction/12 ou mycontroller/23/mvaction/stringid. Si je tente d'utiliser cette voie sans spécifier la valeur de tout id fonctionne très bien par exemple:

Html.ActionLink("Link text", "ActionName", new{docid = 23}); 

Tout se passe bien, mais si j'utilise des liens comme:

Html.ActionLink("Link text", "ActionName", new{docid = 23, id = 223}) 

Cela produira currentcontroller.mvc url/23/ActionName/223 est absolument correct, mais quand il charge la page, il donne une erreur JavaScript dans le fichier jquery1.4.2.min.js.

Cela est étrange: si je change id pour someid = 223 il reflétera dans la chaîne de requête et il n'y aura pas d'erreur JS. Edit: J'ai fait un peu plus de débogage et trouvé quand id et docid sont mentionnés dans les valeurs de route une chose est ignorée dans global.asax qui est le chemin d'ignorer.

routes.RouteExistingFiles = false; 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.ignoreRoute est totalement contournée et je peux voir les noms des fichiers JS dans le dictionnaire de la valeur de la route pendant le débogage dans mon contrôleur.

Répondre

0

Si nous traînons les scripts de l'explorateur de solution pour Site.master il en résulte suivant la sortie

<script type="text/javscript" src="../../scripts/jquery.min.js"></script> 

Les points principaux (..) créent le problème. Mettre le chemin source dans url.content ou utiliser/scripts au lieu de ../../scripts résoudra le problème car ces périodes principales les forcent à correspondre à une route dans global.asax.

0

lui donne javascript erreur dans jquery1.4.2.min.js fichier

La cause la plus probable est que quelque chose que vous affichez sur la page est différente et vous effectuez une action provoque l'erreur. Pouvez-vous fournir assez d'un échantillon de la page affichée pour montrer à quoi vous utilisez jQuery?

+0

Le problème n'est peut-être pas associé à javascript. comme je l'ai mentionné dans ma question comme j'utilise le paramètre id avec le paramètre docid l'erreur s'est produite. si je change d'id à someid (ou à tout) tout fonctionne bien. Je pense (je peux me tromper) que le problème est survenu quand "{controller} .mvc/{docid}/{action}/{id}" correspond à –

+0

j'ai fait du débogage et j'ai mis à jour la question plz c si tu peux m'aider ici Cordialement –

Questions connexes