Saltar al contenido

Cómo definir la función que devuelve html en el núcleo de asp.net

Solución:

Podrías estar buscando @functions ese uso Html.Raw.

A continuación, se muestra un ejemplo que muestra dos estilos de función. El primero usa un cuerpo de bloque tradicional, el segundo usa un cuerpo de expresión.

Ambos tienen el [email protected] prefijo en la cadena.

  • los $ habilita {interpoloation} en la cuerda.
  • los @ hace una cadena literal, que puede abarcar varias líneas.

La tercera forma es una especie de truco que nos permite analizar Razor dentro de la función. Es lo más cerca que parece que podemos llegar al original. @helper sintaxis.

SomeRazorFile.cshtml

@using Microsoft.AspNetCore.Html

@functions 
{
    IHtmlContent MakeNote(string content) 
    {
        return Html.Raw($@"
            <p>
                <strong>Note</strong> {content}
            </p>
        ");
    }

    // an alternative that uses method shorthand
    IHtmlContent MakeNoteToo(string content) => Html.Raw([email protected]"
        <p>
            <strong>Note</strong> {content}
        </p>
    ");
}

@{
    // an alternative that parses razor
    Func<string, IHtmlContent> MakeNoteThree = 
        @<p>
            <strong>Note</strong> {@item}
        </p>;
}

<div>
    @MakeNote("Foo")
    @MakeNoteToo("Bar")
    @MakeNoteThree("Baz")
</div>

Editar: se agregó un ejemplo que analiza Razor. Consulte https://github.com/aspnet/Razor/issues/715 para obtener más detalles.

Ya que ASP.NET Core 3.0, podemos declarar Funciones locales que contiene el marcado para que sirva como métodos de creación de plantillas, dentro Bloques de código de afeitar:

@{
    void RenderName(string name)
    {
        <p>Name: <strong>@name</strong></p>
    }

    RenderName("Mahatma Gandhi");
    RenderName("Martin Luther King, Jr.");
}

Que genera el siguiente código HTML:

<p>Name: <strong>Mahatma Gandhi</strong></p>
<p>Name: <strong>Martin Luther King, Jr.</strong></p>

Documentación: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-3.0#razor-code-blocks


(solo para completar) En ASP.NET Core 2.0 nosotros podemos usar Delegados de Templated Razor, que combinado con el <text></text> etiqueta de afeitar (Transición Delimitada Explícita), nos permite hacer algo similar a ASP.NET MVC de antaño @helper etiqueta:

@{
    Func<string, object> RenderName = @<text>
        <p>
            Name: <strong>@item</strong>
        </p>;
    </text>;
}

<div>
    @RenderName("Victor")
</div>

Que genera el siguiente código HTML:

<div>
    <p>
        Name: <strong>Victor</strong>
    </p>
</div>

Documentación: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-2.0#templated-razor-delegates

Documentación <text></text>: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-2.0#razor-code-blocks

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *