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:

&lt;p&gt;Hello World &lt;/p&gt;

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.

questionAnswers(1)

yourAnswerToTheQuestion