cómo cambiar "IHtmlString" a "MvcHtmlString"?

Actualmente estoy escribiendo el método de 2 ayudantes para extender una implementación en la que estoy usando "IHtmlString", ¿cómo puedo convertir esto a un método usando "MvcHtmlString"? Ayuda...

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
    No entiendo el problema: ¿quiere devolver una instancia concreta de MvcHtmlString en lugar de la interfaz abstracta de IHtmlString? ¿Por qué no simplemente devuelve una instancia de MvcHtmlString directamente?
    agregado el autor Dai, fuente
    ¿Cómo concatenar tanto "template" como "exceptionList" para devolver un MvcHtmlString en mi caso anterior?
    agregado el autor user584018, fuente

    1 Respuestas

    Aunque esperaba que el método StringBuilder.ToString() fuera llamado implícitamente por string.Format() , si eso no ocurre, llame explícitamente al ToString() método de esta manera:

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

    Además, su método se declara para devolver un IHtmlString . Si cambia la firma para usar MvcHtmlString , le indicará al compilador el tipo de devolución que desea. En este punto, solo se trata de garantizar que el valor de retorno coincida con la declaración actualizada:

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