Logo

Problema da primeira linha em XML com Razor

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:

public ActionResult Index()

{

     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