Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Context dando erro

Bom dia, Estou um pouco decepcionado com este curso devido ao grande CTRL+C, CTRL+V, que está sendo apresentado sem muita profundida. Venho desde o começo dos cursos de C# desenvolvendo esse projeto e estou tendo atualmente um problema no for="@context" e não consegui encontrar o motivo pelo fórum.

Caso reparem não utilizei ButtonTemplate pois estive tendo problema com ele e pelo fórum descobri que nas versões mais recentes do MudBlazor essa estrutura foi retirada/modificada e por isso utilizei a ActivatorContent.

@page "/CadastrarArtista"
@inject ArtistaAPI artistaAPI
@inject NavigationManager navigationManager

<MudPaper Class="px-8 pt-2 pb-4 mx-12 my-8" Justify="Justify.Center">

    <MudText Class="mt-8" Typo="Typo.h4">Cadastro do Artista</MudText>

    <MudForm>

        <MudTextField Class="mt-4" T="string" Placeholder="Nome do Artista"
                      Variant="Variant.Outlined"
                      @bind-Value ="nome"
                      Required="true"
                      RequiredError="Campo obrigatório." />

        <MudTextField Class="mt-4" T="string" Placeholder="Biografia do artista"
                      Variant="Variant.Outlined"
                      @bind-Value="biografia"
                      Lines="4"
                      Required="true"
                      RequiredError="Campo obrigatório." />
        <MudImage Class="mt-4" src="@fileImage" />
                <MudFileUpload T="IBrowserFile" Accept=".jpeg" FilesChanged="UploadFile" >
            <ActivatorContent>
                        <MudButton HtmlTag="label"
                                   Variant="Variant.Filled"
                                   Color="Color.Primary"
                                   StartIcon="@Icons.Material.Filled.PhotoCamera"
                                   for="@context">
                            Foto de Perfil
                        </MudButton>
                    </ActivatorContent>
                </MudFileUpload>
                 


        <div class="d-flex align-center justify-space-between mt-4">
            <MudButton Variant="Variant.Filled"
                       @onclick="Navegar"
                       Color="Color.Primary"
                       Class="ml-auto">
                Listar
            </MudButton>
        </div>

        <div class="d-flex align-center justify-space-between mt-4">
            <MudButton Variant="Variant.Filled"
                       @onclick="Cadastrar"
                       Color="Color.Primary"
                       Class="ml-auto">
                Cadastrar
            </MudButton>
        </div>

    </MudForm>
</MudPaper>
@code {
    private string? nome;
    private string? biografia;

    private string? fileImage;

    private async Task Cadastrar()
    {
        var request = new ArtistaRequest(nome!, biografia!);
        await artistaAPI.AddArtistaAsync(request);
        Navegar();
    }
    private void Navegar()
    {
        navigationManager.NavigateTo("/Artistas");
    }

    private async Task UploadFile(IBrowserFile file)
    {
        long maxFileSize = 1024 * 1024 * 15;
        var format = "image/jpeg";
        var resizedImage = await file.RequestImageFileAsync(format, 200, 200);

        using var fileStream = resizedImage.OpenReadStream();
        using var memoryStream = new MemoryStream();
        await fileStream.CopyToAsync(memoryStream);

        fileImage = $"data:{format};base64,{Convert.ToBase64String(memoryStream.ToArray())}";
    }

}
1 resposta
solução!

Oi Felipe, bom dia!

O problema aparenta está relacionado ao uso do @context dentro do MudButton no ActivatorContent. O @context é geralmente usado em componentes Blazor para acessar o contexto atual em um Template, mas no seu caso, parece que não é necessário ou está sendo usado de forma incorreta.

Aqui está uma sugestão de como ajustar o código:

<MudFileUpload T="IBrowserFile" Accept=".jpeg" FilesChanged="UploadFile">
    <ActivatorContent>
        <MudButton HtmlTag="label"
                   Variant="Variant.Filled"
                   Color="Color.Primary"
                   StartIcon="@Icons.Material.Filled.PhotoCamera">
            Foto de Perfil
        </MudButton>
    </ActivatorContent>
</MudFileUpload>

Remova o for="@context" do MudButton. O atributo for é geralmente usado para associar um rótulo a um elemento de formulário, mas no contexto do MudButton dentro do ActivatorContent, ele não é necessário.

Espero que essa alteração ajude a resolver o problema. Se o problema persistir, pode ser interessante verificar a documentação mais recente do MudBlazor ou procurar por atualizações que possam ter impactado o uso do ActivatorContent.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.