The name="" attribute for <input />, <textarea>, and <select> elements isn't just allowed, it's actually
required to give name/value pair results. The name="" attribute is only bad if it's used as id="". ASP.NET is doing it right.
As for .browser files:
ASP.NET (stupidly, some might say) uses a whitelist browser caps ("capabilities") system to determine what capabilities (Java, Flash, ECMAScript support, maximum supported DOM level, etc) the current UA supports by matching the User-Agent string against a database of .browser files located in the filesystem. Each .browser file contains the listing of capabilities in an XML format.
.browser files have been around since the days of "classic" ASP (they were in .ini format rather than XML though), so they're nothing new.
ASP.NET first tries the file "default.browser" and if the regular expression or wildcard contained within matches the current UA then it uses that. The .browser file tells ASP.NET how it should render content in ways that cannot be defined in web.config. I've created my own default.browser file that makes ASP.NET assume that every UA (including the W3C Validator) supports everything IE6 does (which in this day and age... does).
Here it is:
<browsers>
<browser refID="Default">
<capture></capture>
<capabilities>
<capability name="css1" value="true" />
<capability name="css2" value="true" />
<capability name="ecmascriptversion" value="3.0" />
<capability name="frames" value="true" />
<capability name="inputType" value="keyboard" />
<capability name="isColor" value="true" />
<capability name="javaapplets" value="true" />
<capability name="javascript" value="true" />
<capability name="jscriptversion" value="5.7" />
<capability name="preferredRenderingType" value="xhtml" />
<capability name="screenBitDepth" value="32" />
<capability name="supportsAccesskeyAttribute" value="true" />
<capability name="supportsBold" value="true" />
<capability name="supportsCss" value="true" />
<capability name="supportsDivNoWrap" value="true" />
<capability name="supportsFileUpload" value="true" />
<capability name="supportsFontName" value="true" />
<capability name="supportsFontSize" value="true" />
<capability name="supportsImageSubmit" value="true" />
<capability name="supportsItalic" value="true" />
<capability name="supportsMaintainScrollPositionOnPostback" value="true" />
<capability name="supportsMultilineTextBoxDisplay" value="true" />
<capability name="supportsVCard" value="true" />
<capability name="supportXmlHttp" value="true" />
<capability name="tables" value="true" />
<!-- Don't use XhtmlTextWriter since <form> renders without the <div> wrapper around the hidden inputs -->
<capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" />
<capability name="w3cdomversion" value="2.0" />
<capability name="xml" value="true" />
</capabilities>
<controlAdapters markupTextWriterType="System.Web.UI.HtmlTextWriter">
</controlAdapters>
</browser>
</browsers>