Problema da primeira linha em XML com Razor
- Categorias: .NET 4.0+ | ASP.NET
- 02/01/2015 11:37
- Comentarios: 0
Recentemente me deparei com um problema curioso ao tentar construir um XML usando o Razor (mecânica de geração de Views do ASP.NET MVC). Apesar de ser feito para gerar HTML, o Razor funciona muito bem para gerar XML também, bom... acontece que para fabricar um XML válido, o mesmo precisa iniciar com a tag <?xml version="1.0" encoding="utf-8" ?>, absolutamente nada pode vir antes (espaço, quebra de linha, ou qualquer outro caracter). Mesmo colocando essa tag no início da minha view Razor .cshtml, o arquivo gerado insistia em conter uma quebra de linha no seu início.
Não sei se isso é um BUG, mas pesquisando um pouco vi que várias pessoas já tiveram esse mesmo problema, aqui e aqui existem várias soluções, só que todas elas (as que realmente resolviam o problema) exigia que você adicionasse no seu projeto arquivos de código que não eram pertinentes ao foco do negócio da sua aplicação: classes especializadas ou procedimentos longos que deixariam o código de difícil manutenção.
Felizmente tive uma ideia diferente, já que essa quebra de linha era gerada pelo Razor, então antes da renderização da view, vou escrever a tag que é exigida estar por primeiro, bastando adicionar uma única linha de código logo antes do return. A action ficou assim:
{
Response.Write("<?xml version=\"1.0\"
encoding=\"utf-8\" ?>");
return View();
Só isso, com esse Response.Write o problema foi resolvido! A quebra de linha pode continuar lá, sem ser importunada, rsrsrs