blazor devuelve RenderFragment ‘__builder’ que no existe en el contexto actual.
Estoy tratando de devolver un RenderFragment
desde un método privado de un componente, pero estoy recibiendo el error de compilación:
'__builder' no existe en el contexto actual
Aquí está el código mínimo que muestra el problema:
<div>
@RenderButton(1)
</div>
@code {
private RenderFragment RenderButton(int number)
{
return builder =>
{
<button type="button">@number</button>
};
}
}
Parece que esto podría no ser posible o permitido, si no, ¿hay alguna manera de evitar tener que escribir el mismo código de renderización? Digamos que necesito usar este método RenderButton
en múltiples bucles y bloques de condición.
Edit: la única solución que se me ocurre ahora es crear un componente para cada uno de estos métodos RenderFragment
.
davy.ai
El problema aquí es que la variable
builder
no está definida en el ámbito del métodoRenderButton
. En realidad, esta variable es proporcionada por el tiempo de ejecución de Blazor cuando se está representando un componente. Por lo tanto, no se puede usar en un método privado de su componente.Para evitar tener que escribir el mismo código de renderizado varias veces, puede crear un componente separado que encapsule la lógica de renderización que necesita. Este nuevo componente se puede utilizar en varios lugares de su aplicación.
Por ejemplo, podría crear un nuevo componente llamado
ButtonRenderer
que tome un parámetronúmero
y represente el botón correspondiente:Luego, puede utilizar este nuevo componente en su componente original de la siguiente manera:
De esta manera, puede reutilizar la lógica de renderizado sin tener que escribirla varias veces.