I'm revisiting this thread after a long while. Looking back on it, I sure seem thick. Sorry for my newbishness. I now have the ability to do offline development with WebMatrix, which is fantastic and makes these things so much easier to play with. Thanks guys for your persistence and for supporting great development tools.
I started a new skin for another site using the latest artisteer30 skins in 2.3.7.0. Artisteer 3 of course.
In the process, I went a bit deeper on making layout.master's tree structure match that of what Artisteer generates. I got everything on this new skin looking great, but my old friend the pesky float was there, of course.
Looking back at your article on The Trouble With ASP.NET Menu, I saw the explanation for the additional classes is the Javascript associated with the menus. I tooled around with this a bit and found a solution to disable that Javascript, so I figured I'd share it here. Fortunately, it's very simple. See what you think.
The additional attributes on the menu markup, including the style: floats, comes from the ASP.NET AJAX scripts made specifically for the menu. According to the articles I read, the script in question is fed to the page as "ScriptResource.axd", along with a set of query parameters tagged on the end to identify the desired script, since there's more than one.
Looking through the two ScriptResource.axd references served by the new design, I found the one that was manipulating the menu markup. So far, so good.
I also ran across two articles on how to override these scripts through markup in the layout.master file. They are here and here. Apparently, the scripts are housed in .NET assemblies and pulled at run-time, so you can't change those scripts directly but you can instead specify that ASP should pull them as plain .js files from a path on your site. Here's the additional markup:
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" >
<Scripts>
<asp:ScriptReference name="MenuStandards.js" assembly="System.Web" path="MenuStandards.js"/>
</Scripts>
</asp:ScriptManager>
The MenuStandards.js script does all of the manipulation. To see it, you can either save the source of this script from the page before you update layout.master or you can download it from Microsoft's CDN at http://ajax.aspnetcdn.com/ajax/4.0/1/MenuStandards.js. In fact, you can see a listing of all the scripts available from the CDN at http://www.asp.net/ajaxlibrary/CDNAjax4.ashx.
If you add the MenuStandards.js file in the same directory as layout.master and use the above scriptreference markup, you'll achieve the same effect with the page as the original, however it will be fetching MenuStandards.js from the filesystem and not from ScriptResources.axd, thus giving you control over what the script can do.
There would be two approaches, the surgical and the brute force. The surgical method would be to cut out the pieces that you don't want from MenuStandards.js and leave the rest.
While this would probably be advisable when you aren't sure what functionality is supplied by the script aside from the annoying floats, I went with the brute force approach and it seems fine for me so far. The brute force approach is of course to just empty out the file. The menu renders as Artisteer intended now, at least with this skin.
For the record, I tried various methods of avoiding having to have a blank .js file by, for example, not including the path attribute in the scriptreference, but I couldn't find a way to make that approach work.
Hope this helps someone else as well.
One more thing, the technique on how I found the script name (and assembly) in the first place, since you can't divine that from ScriptResource.axd. I found an article here which told me you can completely override all of the .NET scripts using a scriptmanager attribute ScriptPath, which forces it to look for all such ScriptResource.axd scripts on the filesystem. Doing this led to a combination of exceptions and 404s on the scripts the page was looking for, all given by their regular name and filesystem path. The path happens to include the assembly name. You can download each of the named files from the MS CDN (link above), create their path and put them in there to get past one exception to see the next. Voila.