2009-10-19 12 views
1

Je suis en train de déployer un projet MCV 1.0 sur un serveur Web exécutant IIS6. (pas par mon choix) J'ai lu l'article de Steve Sandersons Here et l'article de Phil Haack mais j'ai encore des probelms.MVC sur IIS6 - Les liens 'Home' ne fonctionnent pas correctement

En ce moment j'essaye de mettre en application l'option 2 de l'article de Steve Sandersons. Le principal problème que j'ai est avec le lien Home ne rend pas correctement. Par exemple, dans mon plan du site je le follwoing:

<%= Html.ActionLink("Home", "Index", "Home") %> 

ce qui rend les pages que http://servername/JCIMS_Orange/Home.mvc ce qui est inexact.

CEPENDANT CE LIEN:

<%= Html.ActionLink("About", "About", "Home") %> 

que ... http://servername/JCIMS_Orange/Home.mvc/About rend ce qui est correct

Ma Global.asax fonction RegisterRoutes ressemble:

 public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
      "Default",            // Route name 
      "{controller}.aspx/{action}/{id}",      // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 

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

Quelqu'un peut-il me dire pourquoi mon Le lien Accueil ne s'affichera pas correctement? J'ai répété cette erreur à la fois sur mon localhost s'exécutant sur WinXP et sur mon serveur Web exécutant Win2003 Server.

Toute suggestion ou pointeurs

Répondre

1

Pourquoi http://servername/JCIMS_Orange/Home.mvc pas? À quoi vous attendiez-vous?

Editer: Les paramètres par défaut de votre définition d'itinéraire indiquent au système que l'index n'est pas nécessaire dans l'itinéraire. Vous pouvez simplement définir le paramètre d'action default sur une chaîne vide. Cela devrait forcer les URL générées via Html.ActionLink à inclure le nom de l'action même pour l'action Index.

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

Cependant, je ne pense pas que ce soit la meilleure solution. Si vos images et css ne fonctionnent pas sans le nom de l'action, il semble que vous ne fassiez pas référence au chemin correctement. Pourriez-vous fournir un exemple d'un de vos liens d'image et peut-être votre lien de fichier css? Sans voir à quoi ils ressemblent, je peux suggérer qu'ils devraient commencer par "/".

Vous devrez corriger ces liens de sorte que lorsque vous utilisez une URL d'itinéraire contenant un paramètre d'ID, ils fonctionneront également pour cette instance. (Par exemple http://servername/JCIMS_Orange/Products.mvc/Details/5)

Edit 2: Parce que votre site est contenu dans un sous-dossier, vous devez inclure ce sous-dossier dans vos chemins d'image et css. Lancer une URL relative avec "/" signifie que c'est juste après le nom du serveur. L'utilisation de "../" signifie qu'il est relatif au chemin courant, ce qui, comme vous l'avez vu, ne fonctionne pas avec le routage MVC par défaut car pour différentes actions, votre URL a un nombre différent d'éléments. Y compris le chemin de votre sous-dossier devrait fonctionner parfaitement dans toutes les situations. Comme ceci:

<img src="/JCIMS_Orange/Content/images/JCIMS_Banner.png" alt="JCIMS Banner" /> 
+0

Je l'ai essayé avec les deux .aspx et .mvc et ne travaille .. si juste l'itinéraire est défini à .ASPX Je suppose que je me attends à http: // servername/JCIMS% 5FOrange/Home.aspx/Index Si je tape cette URL dans la barre d'adresse, la page fonctionne correctement. L'URL http: //servername/JCIMS%5FOrange/Home.apsx me permet d'accéder à la page mais aucune image n'apparaît et aucun de mes css ne fonctionne. -Mark- –

+0

http: //servername/JCIMS_Orange/Home.aspx me arrive à ma page d'accueil et tout mon travail de lien de menu, mais aucun des CSS ou le travail graphique ... Mon Site.master a la suivante JCIMS Banner J'ai aussi essayé ... JCIMS Banner et j'ai aussi essayé ... JCIMS Banner contenu est hors de la racine du site Web. Cela semble qu'il devrait être assez simple à résoudre ... mais en ce moment, il me donne un $$ $$ –

+0

OK ... Votre Edit 2 fonctionne très bien. En mettant le lien dans le site maître de cette manière semble fonctionner correctement. Merci encore pour toute l'aide. –

0

Dennis,

Merci pour vos réponses. Entre votre réponse et un peu plus de jeu, j'ai pu faire fonctionner mon CSS.

J'ai utilisé dans mon fichier Global.asax

routes.MapRoute(
       "Default", 
       "{controller}.aspx/{action}/{id}", 
       new { controller = "Home", action = "", id = "" } 
      ); 

     routes.MapRoute(
      "Root", 
      "", 
      new { controller = "Home", action = "", id = "" } 
     ); 

En outre, je devais liens CSS dans chaque fichier Affichage. Et l'image devait être referanced en utilisant ../ comme si ...

<img src="../Content/images/JCIMS_Banner.png" alt="JCIMS Banner" /> 

Pour l'instant il semble que tout fonctionne. Merci pour votre aide.

-Mark-

+0

Votre CSS se cassera à nouveau dès que vous avez une URL avec une section {id}. Je modifierai à nouveau ma réponse en indiquant comment les fichiers de contenu doivent être référencés. – CoderDennis

Questions connexes