Solución:
Html.Raw()
devoluciones IHtmlString
, no lo ordinario string
. Por lo tanto, no puede escribirlos en lados opuestos de :
operador. Quitar eso .ToString()
vocación
@{int count = 0;}
@foreach (var item in Model.Resources)
{
@(count <= 3 ? Html.Raw("<div class="resource-row">"): Html.Raw(""))
// some code
@(count <= 3 ? Html.Raw("</div>") : Html.Raw(""))
@(count++)
}
Por cierto, volviendo IHtmlString
es la forma en que MVC reconoce el contenido html y no lo codifica. Incluso si no ha causado errores del compilador, llamar ToString()
destruiría el significado de Html.Raw()
La respuesta aceptada es correcta, pero prefiero:
@{int count = 0;}
@foreach (var item in Model.Resources)
{
@Html.Raw(count <= 3 ? "<div class="resource-row">" : "")
// some code
@Html.Raw(count <= 3 ? "</div>" : "")
@(count++)
}
Espero que esto inspire a alguien, aunque llego tarde a la fiesta.
No deberías estar llamando .ToString()
.
Como indica claramente el mensaje de error, está escribiendo un condicional en el que la mitad es un IHtmlString
y la otra mitad es una cuerda.
Eso no tiene sentido, ya que el compilador no sabe qué tipo debería ser la expresión completa.
Hay Nunca una razón para llamar Html.Raw(...).ToString()
.
Html.Raw
devuelve un HtmlString
instancia que envuelve la cadena original.
La salida de la página de Razor sabe que no debe escapar HtmlString
instancias.
Sin embargo, llamando HtmlString.ToString()
solo devuelve el original string
valor de nuevo; no logra nada.