2010-01-21 9 views
0

J'ai un contrôleur de base que j'utilise pour retourner les vues de base comme ceci.Emplacements de vue ASP.NET MVC et routage

public ActionResult Index(string pageName) 
     { 
      return View(pageName); 
     } 

     public ActionResult LanguageSpecific(string ul, string pageName) 
     { 
      var result = View("sv/" + pageName); 

      return View(result.ViewName); 
     } 

Le nom du contrôleur est à la maison est-il possible que pour elle de ne pas chercher le contenu sv dans/home, mais seulement dans/sv

"EnglishRoute",            // Route name 
       "{pageName}.aspx",       // URL with parameters 
       new { controller = "Home", action = "Index", pageName = "" } // Parameter defaults 
      ); 

      routes.MapRoute(
       "SwedishRoute",            // Route name 
       "{ul}/{pageName}.aspx",       // URL with parameters 
       new { controller = "Home", action = "LanguageSpecific", ul = "",pageName = "" } // Parameter defaults 
     ); 

Il semble dans ces endroits:

  • ~/Vues/Accueil/sv/index.aspx
  • ~/Vues/Accueil/sv/index.ascx

Répondre

1

Lorsque vous appelez la méthode View vous pouvez passer dans un chemin d'app-parent qui commence par « ~/» et ASP.NET MVC utilisera le chemin exact que vous spécifiez:

return View("~/UseExactlyThisFile.aspx"); 

De cette façon, il a gagné Ne faites pas sa recherche dans les différents chemins et emplacements préconfigurés.

Veuillez garder à l'esprit que cela n'a pas grand-chose à voir avec le routage (même si c'est un peu le cas).

1

Si vous essayez de localiser vos pages, pourquoi n'utilisez-vous pas les ressources? Avec le motif ci-dessus, vous ne prenez pas vraiment les avantages de mvc. Ou est-ce que je vous ai mal compris? Une solution simple consisterait à utiliser un filtre d'action qui récupère l'identificateur de langue de l'itinéraire et définit l'UICulture. Les vues peuvent alors utiliser des ressources pour localiser leur contenu.