In realtà sto migrando siti Web in ASP.NET 4.0, avendo problemi con il nuovo rendering dei controlli di menu. I miei siti Web utilizzano pesantemente i menu nidificati. Gli effetti al passaggio del mouse vengono utilizzati e il layout è definito da una combinazione di temi e skin con CSS collegato.ASP.NET 4.0 Problemi di rendering con il controllo menu dopo la rimozione di controlRenderingCompatibilityVersion = "3.5"
Se rimuovo l'attributo controlRenderingCompatibilityVersion, non vengono più visualizzati come tabelle nidificate, ma come tag ul/li. Questo rompe il mio layout in molti modi. Qualsiasi raccomandazione per una migrazione di un layout di menu ASP.NET complesso è molto gradita.
Modificato: Markup e dettagli CSS come risposta al commento
relativa sezione del file pelle
<asp:Menu runat="server" DynamicHorizontalOffset="2" Orientation="Horizontal" SkipLinkText=""
StaticPopOutImageUrl="~/App_Images/Themes/arrow_down.gif" DynamicPopOutImageUrl="~/App_Images/Themes/arrow_right.gif">
<StaticMenuItemStyle CssClass="MenuDefaultMenuItemStyle" />
<DynamicMenuItemStyle CssClass="MenuDefaultMenuItemStyle" />
<StaticSelectedStyle CssClass="MenuDefaultSelectedStyle" />
<DynamicSelectedStyle CssClass="MenuDefaultSelectedStyle" />
<StaticHoverStyle CssClass="MenuDefaultHoverStyle" />
<DynamicHoverStyle CssClass="MenuDefaultHoverStyle" />
</asp:Menu>
<asp:Menu runat="server" SkinId="MenuVertical" DynamicHorizontalOffset="2" SkipLinkText=""
StaticPopOutImageUrl="~/App_Images/Themes/arrow_right.gif" DynamicPopOutImageUrl="~/App_Images/Themes/arrow_right.gif">
<StaticMenuItemStyle CssClass="MenuVerticalMenuItemStyle" />
<DynamicMenuItemStyle CssClass="MenuVerticalMenuItemStyle" />
<StaticSelectedStyle CssClass="MenuVerticalSelectedStyle" />
<DynamicSelectedStyle CssClass="MenuVerticalSelectedStyle" />
<StaticHoverStyle CssClass="MenuVerticalHoverStyle" />
<DynamicHoverStyle CssClass="MenuVerticalHoverStyle" />
</asp:Menu>
di stile
.MenuDefaultMenuItemStyle
{
background-color: #D5DCE1;
color: #234875;
padding: 2px;
width: 100%;
}
.MenuDefaultSelectedStyle
{
background-color: #3C5778;
color: #FFFFFF;
padding: 2px;
width: 100%;
}
.MenuDefaultHoverStyle
{
background-color: #666666;
color: #FFFFFF;
padding: 2px;
width: 100%;
}
.MenuVerticalMenuItemStyle
{
background-color: #FFFFFF;
border: 1px solid #D5DCE1;
color: #234875;
height: 30px;
padding: 2px;
width: 100%;
}
.MenuVerticalSelectedStyle
{
background-color: #003366;
border: 1px solid #D5DCE1;
color: #FFFFFF;
height: 30px;
padding: 2px;
width: 100%;
}
.MenuVerticalHoverStyle
{
background-color: #EEEEEE;
border: 1px solid #000000;
color: #234875;
height: 30px;
padding: 2px;
width: 100%;
}
Ho lo stesso problema su un menù abbastanza semplice. Il colore di sfondo CSS sembra essere ignorato per gli elementi del menu che hanno figli, e il mio padding (ho impostato l'orientamento orizzontale) viene ignorato anche per gli elementi nel menu principale, tranne che tra i primi due. –
Questo accade anche per .net 3.5 quando questo attributo viene rimosso? in caso contrario, quindi .net 4.0 potrebbe adottare un approccio diverso (più sano) all'HTML/CSS. Come regola generale, non fidarsi di ASP.NET per generare il markup. Assumi il pieno controllo su di esso e conosci il tuo modo di aggirarlo. Se potessi semplicemente riscrivere quello che hai come un semplice XHTML/CSS, consiglierei questo percorso invece di hackerare i controlli .net. – synhershko
@synhershko: Cosa intendi con "Questo succede anche per .net 3.5?" In .net 3.5 questo attributo è insensato e non esiste! Hacking .net controls non è l'intento di nessuno qui. Tim e io abbiamo seguito le best practice di ieri (abbiamo creato il tuo design usando temi, skin e CSS). Ci dovrebbe essere un facile percorso di migrazione verso le migliori pratiche di oggi. –