2010-07-29 2 views
2

Je me demande si d'autres personnes ont ce même problème ou si c'est juste moi!Rendu Partiel du même nom que le parent View - Crashes WebDev.WebServer40.exe

Étant donné que j'ai une vue Purchases.aspx et une vue partielle Purchases.ascx:

Dans Purchases.aspx si je fais: Html.RenderPartial("Purchases") puis WebDev.WebServer40.exe ferme essentiellement.

Je suppose que cela est dû à un dépassement de pile car RenderPartial ne peut pas déterminer ce qu'il est censé rendre (.aspx ou .ascx).

Est-ce un bug, est-ce un comportement défini, ou est-ce que ça se passe pour moi?

Répondre

7

Il s'agit d'un comportement défini puisque ViewLocationFormats et PartialViewLocationFormats sont définis comme suit et qu'une page ASPX sera examinée en premier.

ViewLocationFormats = new[] { 
      "~/Views/{1}/{0}.aspx", 
      "~/Views/{1}/{0}.ascx", 
      "~/Views/Shared/{0}.aspx", 
      "~/Views/Shared/{0}.ascx" 
     }; 

PartialViewLocationFormats = ViewLocationFormats; 

PartialViewLocationFormats devrait exclure les définitions aspx à mon avis. Surcharger le WebFormViewengine par défaut peut résoudre ce problème. Notez, vous devrez l'enregistrer dans la méthode Application_Start()

public class ASPXViewEngine: WebFormViewEngine 
{ 
    public ASPXViewEngine() 
    { 
     base.PartialViewLocationFormats = 
       new string[] 
        { 
         "~/Views/{1}/{0}.ascx", 
         "~/Views/Shared/{0}.ascx" 
        }; 

     base.AreaPartialViewLocationFormats = 
       new string[] 
        { 
         "~/Areas/{2}/Views/{1}/{0}.ascx", 
         "~/Areas/{2}/Views/Shared/{0}.ascx", 
        }; 
    } 
} 
+0

Merci Ahmad, très utile! –

Questions connexes