Com o novo Razor View Engine, meus HtmlHelpers devem retornar uma string ou IHtmlString?
Com o Razor View Engine, sempre que você envia uma string diretamente para a página, ela é codificada em HTML. por exemplo.:
@"<p>Hello World</p>"
realmente obterá saída para a página como:
<p>Hello World </p>
O qual apareceria no navegador como:
<p> Olá Mundo </p>
Aqui está o problema, porém, ao criar ajudantes de HTML, até agora, com o antigo mecanismo de exibição aspx, eu retornaria uma string e a enviaria para o navegador:
<%= Html.MyCoolHelperMethod(); %>
Então, minha pergunta é basicamente isso. Eu faço isso:
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper)
{
return new helper.Raw("<p>Hello World</p>");
}
Nesse caso, eu posso fazer isso no meu cshtml:
@Html.MyCoolHelperMethod();
ou faço isso:
public static string MyCoolHelperMethod(this HtmlHelper helper)
{
return "<p>Hello World</p>";
}
Nesse caso, eu preciso fazer o trabalho no meu cshtml:
@Html.Raw(Html.MyCoolHelperMethod());
Obviamente, a primeira abordagem faz com que a visualização pareça muito mais limpa, mas estou me perguntando se o padrão comum é de fato para os auxiliares retornar umIHtmlString
e eu tenho feito errado no passado.