I discovered an interesting anomaly today, working with ASP.NET and Web Parts, I had an issue whereby creating a CatalogZone caused the HTML generated from template to lose a whole lot of closing tags. This threw the whole page out the window as the CSS was stuffed. I did a LOT of Googling to no avail.
Finally I went into the tried and true method of trial and error; removing one element at a time until I found the problem bit. This was also anomalous as I have three pages with essentially the same code and only one breaks! I won’t bore you by going through every iteration and step I took, I’ll just bounce to the solution.
In their wisdom Microsoft has apparently made the template work for an odd number of elements, but an even number has a tantrum and is not composed correctly. It was only when I realised that that during my trial and error, the two working pages had 15 and 5 elements respectively, and the “broken” page had 6 elements; thinking this could not possibly be the issue, I checked and was astounded. The general response from my colleagues was “you’ve got to be f@$#en kidding me”. I swear, I’m not.
In summary, from an HTML point of view, this works:
<asp:CatalogZone ID="CatalogZone" runat="server"> <ZoneTemplate> <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart" runat="server"> <WebPartsTemplate> <tfr:stuff1 ID="stuff1" runat="server" /> <tfr:stuff2 ID="stuff2" runat="server" /> <tfr:stuff3 ID="stuff3" runat="server" /> </WebPartsTemplate> </asp:DeclarativeCatalogPart> <asp:PageCatalogPart ID="PageCatalogPart" runat="server" /> </ZoneTemplate> </asp:CatalogZone>
and this doesn’t:
<asp:CatalogZone ID="CatalogZone" runat="server"> <ZoneTemplate> <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart" runat="server"> <WebPartsTemplate> <tfr:stuff1 ID="stuff1" runat="server" /> <tfr:stuff2 ID="stuff2" runat="server" /> </WebPartsTemplate> </asp:DeclarativeCatalogPart> <asp:PageCatalogPart ID="PageCatalogPart" runat="server" /> </ZoneTemplate> </asp:CatalogZone>
