W rzeczywistości migruję strony internetowe do ASP.NET 4.0, mając problemy z nowym renderowaniem elementów sterujących menu. Moje strony internetowe intensywnie korzystają z zagnieżdżonych menu. Stosowane są efekty unoszące, a układ jest definiowany przez kombinację kompozycji i skórek z połączonym CSS.ASP.NET 4.0 Problemy z renderowaniem z kontrolą menu po usunięciu controlRenderingCompatibilityVersion = "3.5"
Po usunięciu atrybutów controlRenderingCompatibilityVersion stron, nie są one już renderowane jako tabele zagnieżdżone, ale jako znaczniki ul/li. To łamie mój układ na wiele sposobów. Wszelkie zalecenia dotyczące migracji złożonego układu menu ASP.NET są bardzo mile widziane.
Zmieniano: Markup i dane CSS jako odpowiedzi na komentarz
odpowiedniej sekcji pliku skóry
<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>
Stylesheet
.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%;
}
Mam ten sam problem w dość prostym menu. Kolor tła CSS wydaje się być ignorowany dla elementów menu, które mają dzieci, a moje dopełnienie (mam ustawioną orientację poziomą) jest również ignorowane w przypadku elementów w menu głównym, z wyjątkiem między dwoma pierwszymi. –
Czy dzieje się to również w przypadku .net 3.5, gdy ten atrybut zostanie usunięty? jeśli nie, to .net 4.0 może przyjmować inne (zdrowsze) podejście do HTML/CSS. Zgodnie z ogólną zasadą nie należy ufać programowi ASP.NET podczas generowania znaczników. Przyjmij pełną kontrolę nad nim i poznaj swoją drogę. Jeśli mógłbyś po prostu przepisać to, co masz jako prosty XHTML/CSS, poleciłbym tę ścieżkę zamiast hackować .netowe elementy sterujące. – synhershko
@synhershko: Co masz na myśli mówiąc "Czy to samo dzieje się z .net 3.5?" W .net 3.5 ten atrybut jest bezsensowny i nie istnieje! Hackowanie .net control nie jest tutaj celem. Tim i ja podążaliśmy za najlepszymi praktykami z dnia wczorajszego (Zbuduj swój projekt za pomocą motywów, skórek i CSS). Powinna istnieć łatwa ścieżka migracji do najlepszych współczesnych praktyk. –