como alterar "IHtmlString" para "MvcHtmlString"?

Atualmente estou escrevendo 2 método auxiliar para estender uma implementação onde estou usando "IHtmlString", como eu posso converter isso para um método usando "MvcHtmlString"? Socorro...

public static IHtmlString ExceptionValidationSummary(this HtmlHelper helper)
    {
        const string template = "<div class=\"ui-widget\"><div class=\"ui-state-error ui-corner-all\" style=\"padding:0 .7em\"><div>" +
                                "" +
                                "Validation Exceptions:</div><div style=\"margin-top: 5px;\"> " + 
                                "
    {0}
</div></div></div>";

        StringBuilder exceptionList = new StringBuilder();

       //Iterate through the exceptions
        foreach (var error in helper.ViewData.ModelState.SelectMany(modelState => modelState.Value.Errors))
        {
            exceptionList.Append(string.Format("
  • {0}
  • ", error.ErrorMessage));
            }
    
            return exceptionList.Length.Equals(0) ? string.Format("").Raw() : string.Format(template, exceptionList).Raw();
    
        }
    
        public static IHtmlString Raw(this string value)
        {
            return new HtmlString(value);
        }
    
    0
    Eu não entendo o problema - você está querendo retornar uma instância concreta MvcHtmlString em vez da interface abstrata IHtmlString? Por que não apenas retornar uma instância MvcHtmlString diretamente?
    adicionado o autor Dai, fonte
    como conciliar "template" e "exceptionList" para retornar um MvcHtmlString no meu caso acima?
    adicionado o autor user584018, fonte

    1 Respostas

    Embora eu espere que o método StringBuilder.ToString() seja implicitamente chamado por string.Format() , se isso não estiver acontecendo, chame explicitamente o ToString() método assim:

    string.Format(template, exceptionList.ToString())
    

    Além disso, seu método é declarado para retornar um IHtmlString . Se você alterar a assinatura para usar MvcHtmlString , isso dirá ao compilador seu tipo de retorno desejado. Neste ponto, é apenas uma questão de garantir que o valor de retorno corresponda à declaração atualizada:

    return MvcHtmlString.Create(string.Format(template, exceptionList.ToString()));
    
    0
    adicionado