2009-03-13 3 views
1

J'ai essayé de faire le ViewEngine utiliser un chemin supplémentaire à l'aide:MasterLocationFormats dans WebFormViewEngine non utilisé?

base.MasterLocationFormats = new string[] { 
    "~/Views/AddedMaster.Master" 
}; 

dans le constructeur de la ViewEngine. Cela fonctionne bien pour aspx et ascx (PartialViewLocationFormats, ViewLocationFormats).

Je dois encore fournir la MasterPage dans web.config ou dans la déclaration de page. Mais si je le fais, alors cette déclaration est utilisée, pas celle de ViewEngine. Si j'utilise des MasterLocationFormats vides, aucune erreur n'est générée. Cela n'est-il pas implanté dans RC1?

EDIT:

utilisant:

return View("Index", "AddedMaster"); 

au lieu de

return View("Index"); 

dans le contrôleur a travaillé.

Répondre

1

Votre exemple n'est pas vraiment complet, mais je vais deviner que votre bloc de code existe au niveau de la classe et non à l'intérieur d'une méthode constructeur. Le problème avec cela est que la classe de base (WebFormViewEngine) initialise les propriétés de "format d'emplacement" dans un constructeur, remplaçant ainsi votre déclaration;

public CustomViewEngine() 
{ 
    MasterLocationFormats = new string[] { 
     "~/Views/AddedMaster.Master" 
    }; 
} 

Si vous voulez que le maître codé en dur seulement un coup de pied dans une sorte de défaut dernier effort, vous pouvez faire quelque chose comme ceci:

public CustomViewEngine() 
{ 
    MasterLocationFormats = new List<string>(MasterLocationFormats) { 
     "~/Views/AddedMaster.Master" 
    }.ToArray(); 
} 
+0

j'avais les MasterLocationFormats fixés dans le constructeur par défaut. Cela a-t-il vraiment fonctionné pour vous? –

+0

Gardez à l'esprit que vous devez_ spécifier une page MasterPage valide dans la directive @Page dans chacune de vos vues. Pour vérifier que ma solution simple fonctionne, utilisez l'une des surcharges de méthode View qui vous permet de spécifier une page maître. Par exemple. "return View (" Index "," ThisMasterPageDoesntExist ");". – thomasjo

Questions connexes