Sabemos que fazer um controle geralmente é mais complicado do que um módulo que implementa apenas a mesma função, pois precisamos considerar mais exceções e adaptabilidade para conseguir o efeito de integração e reutilização de código. E quando desenvolvemos um controle ASP.NET, por mais complexas que sejam as funções e o desempenho da UI do nosso controle, o que acabamos obtendo no navegador do cliente é apenas uma combinação de código HTML e scripts.
Quanto aos códigos HTML gerados por estes controles, seus formatos podem ser processados à vontade? Então, o que significa não ser livre? Precisamos garantir a formatação do código HTML e manter um bom recuo hierárquico do HTML? Pelo contrário, aqui devemos tentar remover qualquer coisa que não tenha nada a ver com o código HTML do controle, incluindo espaços "inúteis" e retornos de carro. Por que enfatizar o inútil? Sabemos que quando o navegador processa o código-fonte HTML, espaços consecutivos e retornos de carro são processados e exibidos como um espaço. Portanto, parece que não precisamos nos preocupar com espaços extras inúteis ou retornos de carro antes, depois ou no meio do código HTML quando o controle ASP.NET é renderizado. Então, vamos dar uma olhada no seguinte exemplo: <img id="análiseChart" src="ChartPic_000007.jpeg?B9FA64E7-2020-4430-AAF4-B20A51794909" usemap="#usemap_análiseChart">
<map id="usemap_análiseChart">
<área>...<área>
</mapa>
'www.downcodes.com
O trecho de código acima é o código HTML gerado pelo controle Web Chart em Dundas Web Controls. Parece não haver problema ao usar esta imagem de gráfico com uma área quente. Se você usar apenas este gráfico, realmente não haverá problema. Mas quando combinamos o Dundas Chart em um WebControl personalizado, seu código HTML com quebras de linha e recuo causa problemas. Devido às necessidades de layout, preciso colocar este gráfico em uma tabela e fazer com que a tabela exiba uma borda de pixels ao redor do gráfico. Originalmente, a aparência deste Gráfico era apenas uma imagem e parecia não haver problema com esta combinação. No entanto, a situação real é que a imagem do Gráfico nunca poderia preencher a tabela externa (conforme mostrado abaixo), e aí. sempre houve lacunas na parte inferior da imagem e na borda inferior da tabela. Há uma lacuna de 3-4 pixels. Essa lacuna é causada pelo espaço e pela quebra de linha entre <img /> e <map> (embora o IE o trate apenas como um espaço).
|
Como o Dundas Web Chart é uma dll compilada lançada, torna-se mais problemático excluir espaços inúteis e retornos de carro no HTML gerado. Só podemos retirar o código HTML de seu fluxo de renderização, remover manualmente os espaços e os retornos de carro entre as tags e, em seguida, enviá-lo para o fluxo de saída do novo controle. Embora este método possa resolver alguns problemas, se os controlos internos forem demasiado complexos, será um fardo extra em termos de precisão e eficiência.
Portanto, pelas questões acima podemos ver que quando fazemos um controle ASP.NET, o código HTML que é finalmente renderizado deve seguir o "princípio da compactação do código" para melhorar a adaptabilidade do controle. Sob este princípio, o exemplo anterior deveria ficar assim:
<img id="análiseChart" src="ChartPic_000007.jpeg?B9FA64E7-2020-4430-AAF4-B20A51794909" usemap="#usemap_análiseChart"><map id="usemap_análiseChart"><area>...<area></ mapa>
Desta forma, a imagem do gráfico fica bem adjacente à borda da tabela que a rodeia.