Jarvis.WebPages 1.0.1.6

dotnet add package Jarvis.WebPages --version 1.0.1.6
                    
NuGet\Install-Package Jarvis.WebPages -Version 1.0.1.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jarvis.WebPages" Version="1.0.1.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Jarvis.WebPages" Version="1.0.1.6" />
                    
Directory.Packages.props
<PackageReference Include="Jarvis.WebPages" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Jarvis.WebPages --version 1.0.1.6
                    
#r "nuget: Jarvis.WebPages, 1.0.1.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Jarvis.WebPages@1.0.1.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Jarvis.WebPages&version=1.0.1.6
                    
Install as a Cake Addin
#tool nuget:?package=Jarvis.WebPages&version=1.0.1.6
                    
Install as a Cake Tool

Jarvis.WebPages

Biblioteca de componentes TagHelper para construção de formulários em Razor Pages e MVC.

Instalação

dotnet add package Jarvis.WebPages

Registre os TagHelpers no _ViewImports.cshtml:

@addTagHelper *, Jarvis.WebPages

Adicione o script de máscaras e formatação no layout:

<script src="/_content/Jarvis.WebPages/js/init.js"></script>

Componentes

Propriedades Comuns (BaseTagHelper)

Propriedade Tipo Descrição
asp-for ModelExpression Binding com a propriedade do modelo
asp-readonly bool Torna o campo somente leitura
asp-disabled bool Desabilita o campo
asp-name string Sobrescreve o nome do campo

Todos os componentes geram automaticamente: label, input, texto descritivo (via [Display(Description)]) e mensagem de validação.


FormText

Campo de texto simples.

<form-text asp-for="Nome" asp-col-css="col-md-6" asp-placeholder="Digite o nome" />
Propriedade Tipo Padrão Descrição
asp-col-css string col-md-12 Classe CSS da coluna
asp-input-css string Classe CSS adicional no input
asp-placeholder string Placeholder do campo

FormTextArea

Campo de texto multilinha.

<form-text-area asp-for="Observacao" asp-col-css="col-md-12" asp-placeholder="Descreva..." />
Propriedade Tipo Padrão Descrição
asp-col-css string col-md-12 Classe CSS da coluna
asp-input-css string Classe CSS adicional no input
asp-placeholder string Placeholder do campo

FormPassword

Campo de senha.

<form-password asp-for="Senha" asp-col-css="col-md-6" />
Propriedade Tipo Padrão Descrição
asp-col-css string col-md-12 Classe CSS da coluna
asp-input-css string Classe CSS adicional no input

FormDate

Campo de data com suporte a date picker nativo ou input com máscara dd/mm/aaaa.

<form-date asp-for="DataNascimento" asp-col-css="col-md-4" asp-show-picker="false" />
Propriedade Tipo Padrão Descrição
asp-input-css string Classe CSS adicional no input
asp-col-css string col-md-12 Classe CSS da coluna
asp-max DateTime? Data máxima permitida
asp-min DateTime? Data mínima permitida
asp-on-change string Nome da função JS chamada ao alterar a data
asp-show-picker bool true true = date picker nativo, false = input texto

Exemplo com asp-on-change

<form-date asp-for="DataInicio"
           asp-col-css="col-md-4"
           asp-show-picker="true"
           asp-on-change="onDataInicioChange" />

<script>
    function onDataInicioChange(value) {
        // value = "2024-06-15" (formato ISO)
        console.log('Data selecionada:', value);
    }
</script>

Quando asp-show-picker="true", a função é chamada via onchange do input. Quando asp-show-picker="false", é chamada via data-onchange após o preenchimento completo da data.


FormDateTime

Campo de data e hora (datetime-local).

<form-date-time asp-for="DataHora" asp-col-css="col-md-6" />
Propriedade Tipo Padrão Descrição
asp-input-css string Classe CSS adicional no input
asp-col-css string col-md-12 Classe CSS da coluna
asp-max DateTime? Data/hora máxima permitida
asp-min DateTime? Data/hora mínima permitida

FormSelect

Campo de seleção (dropdown).

<form-select asp-for="CidadeId"
             asp-items="Model.Cidades"
             asp-value-field="Id"
             asp-text-field="Nome"
             asp-placeholder="Selecione a cidade"
             asp-on-change="onCidadeChange" />
Propriedade Tipo Padrão Descrição
asp-input-css string Classe CSS adicional no select
asp-col-css string col-md-12 Classe CSS da coluna
asp-items IEnumerable Lista de itens para popular o select
asp-on-change string Nome da função JS chamada ao alterar o valor
asp-text-field string Text Nome da propriedade usada como texto
asp-value-field string Value Nome da propriedade usada como value
asp-placeholder string Selecionar... Texto da opção vazia

Exemplo com asp-on-change

<form-select asp-for="EstadoId"
             asp-items="Model.Estados"
             asp-value-field="Id"
             asp-text-field="Nome"
             asp-on-change="onEstadoChange" />

<script>
    function onEstadoChange(value) {
        // value = id do estado selecionado
        console.log('Estado selecionado:', value);

        // Exemplo: carregar cidades do estado via AJAX
        fetch(`/api/cidades?estadoId=${value}`).
            then(r => r.json()).
            then(cidades => {
                // popular outro select de cidades
            });
    }
</script>

FormNumeric

Campo numérico com formatação automática (dinheiro, percentual, decimal, inteiro).

<form-numeric asp-for="Valor" asp-type="Money" asp-precision="2" asp-col-css="col-md-4" />
Propriedade Tipo Padrão Descrição
asp-col-css string col-md-12 Classe CSS da coluna
asp-input-css string Classe CSS adicional no input
asp-precision int 2 Casas decimais
asp-type NumericType Decimal Tipo de formatação

NumericType

Valor Formatação
Money R$ 1.234,56
Percent 12,34%
Decimal 1.234,56
Integer 1.234

FormMask

Campo com máscara de entrada (aceita apenas números, formatados automaticamente).

<form-mask asp-for="CPF" asp-type="CPF" asp-col-css="col-md-4" />
<form-mask asp-for="Codigo" asp-type="Custom" asp-mask="##.###-##" />
<form-mask asp-for="Quantidade" asp-type="OnlyNumbers" />
Propriedade Tipo Padrão Descrição
asp-col-css string col-md-12 Classe CSS da coluna
asp-input-css string Classe CSS adicional no input
asp-type MaskType CPF Tipo de máscara
asp-on-complete string Nome da função JS chamada ao completar a máscara
asp-mask string Máscara personalizada (usado com Custom)

MaskType

Valor Máscara Exemplo
CPF ###.###.###-## 123.456.789-00
CNPJ ##.###.###/####-## 12.345.678/0001-90
CPF_CNPJ Automático por tamanho CPF ou CNPJ
CEP #####-### 12345-678
PhoneNumber (##) #####-#### (11) 99876-5432
OnlyNumbers Sem máscara, só dígitos 123456
Custom Definida por asp-mask Conforme o pattern

Exemplo com asp-on-complete

O callback é disparado quando o usuário termina de preencher todos os dígitos da máscara.

<form-mask asp-for="CPF"
           asp-type="CPF"
           asp-col-css="col-md-4"
           asp-on-complete="onCpfComplete" />

<script>
    function onCpfComplete(value) {
        // value = "123.456.789-00" (com máscara)
        console.log('CPF preenchido:', value);

        // Exemplo: buscar dados do cliente pelo CPF
        const cpf = value.replace(/\D/g, '');
        fetch(`/api/clientes?cpf=${cpf}`).
            then(r => r.json()).
            then(cliente => {
                // preencher campos do formulário
            });
    }
</script>
<form-mask asp-for="CEP"
           asp-type="CEP"
           asp-col-css="col-md-3"
           asp-on-complete="onCepComplete" />

<script>
    function onCepComplete(value) {
        // value = "12345-678"
        const cep = value.replace(/\D/g, '');
        fetch(`https://viacep.com.br/ws/${cep}/json/`).
            then(r => r.json()).
            then(endereco => {
                document.querySelector('[name="Logradouro"]').value = endereco.logradouro;
                document.querySelector('[name="Bairro"]').value = endereco.bairro;
                document.querySelector('[name="Cidade"]').value = endereco.localidade;
            });
    }
</script>

Máscara Custom

Use # para representar um dígito numérico. Qualquer outro caractere é inserido automaticamente como separador fixo. O asp-on-complete também funciona com máscaras customizadas.

<form-mask asp-for="Protocolo"
           asp-type="Custom"
           asp-mask="####/####-##"
           asp-on-complete="onProtocoloComplete" />

<script>
    function onProtocoloComplete(value) {
        // value = "2024/0001-01"
        console.log('Protocolo preenchido:', value);
    }
</script>

Exemplos de patterns:

##.###-##    →  12.345-67
####/####    →  2024/0001
###-##       →  123-45
####/####-## →  2024/0001-01

Alerts

Componente de alertas Bootstrap que exibe mensagens armazenadas via TempData. Renderiza alertas de info (azul), sucesso (verde), aviso (amarelo) e erro (vermelho).

Na view (layout ou página):

<alerts></alerts>

No PageModel:

// Alerta informativo (azul)
this.Info("Operação realizada.");

// Alerta de sucesso (verde)
this.Success("Registro salvo com sucesso!");

// Alerta de aviso (amarelo)
this.Warning("Atenção: campo opcional não preenchido.");

// Alerta de erro (vermelho)
this.Error("Falha ao salvar o registro.");

return RedirectToPage();

As mensagens são exibidas automaticamente na próxima renderização da página e descartadas após a exibição.


Helpers

is-visible

Controla a visibilidade de qualquer elemento HTML. Quando false, o elemento é completamente removido do output.

<div is-visible="Model.ExibirDetalhes">
    Conteúdo visível apenas quando ExibirDetalhes for true.
</div>

<button is-visible="Model.PodeExcluir">Excluir</button>

disabled

Adiciona o atributo disabled a qualquer elemento HTML quando a condição é true.

<button disabled="Model.Processando">Salvar</button>
<input disabled="!Model.PodeEditar" />

ButtonWhatsApp

Botão flutuante de WhatsApp com animação de pulso. Renderiza um ícone fixo no canto inferior direito que abre uma conversa no WhatsApp.

<button-whats-app number="5511999999999" text="Olá, preciso de ajuda!" />
Propriedade Tipo Descrição
number string Número do WhatsApp com código do país (sem +, espaços ou traços)
text string Texto pré-preenchido na mensagem

Extensions

Métodos de extensão disponíveis para uso no PageModel e HttpContext.

Validação

if (ModelState.NotValid()) return Page();

IP do Cliente

var ip = HttpContext.GetIpAddress();

Autenticação

// Login
await HttpContext.LoginAsync(user);

// Logout
await HttpContext.LogoutAsync();

// Atualizar uma claim
await HttpContext.UpdateClaimAsync("Role", "Admin");

// Atualizar múltiplas claims
await HttpContext.UpdateClaimsAsync(
    new JarvisClaim("Role", "Admin"),
    new JarvisClaim("Name", "João")
);

Sessão

// Armazenar string
HttpContext.SetSession("Token", "abc123");

// Armazenar objeto (serializado automaticamente)
HttpContext.SetSession("Carrinho", carrinho);

// Recuperar string
var token = HttpContext.GetSession("Token");

// Recuperar objeto (deserializado automaticamente)
var carrinho = HttpContext.GetSession<Carrinho>("Carrinho");

// Remover
HttpContext.DeleteSession("Token");
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1.6 92 5/19/2026
1.0.1.5 124 2/1/2026
1.0.1.4 112 1/28/2026
1.0.1.3 207 11/28/2025
1.0.1.2 311 11/13/2025
1.0.1.1 215 10/1/2025
1.0.1 154 7/11/2025
1.0.0.9 331 3/26/2025
1.0.0.8 178 2/13/2025
1.0.0.7 181 12/8/2024
1.0.0.6 186 12/7/2024
1.0.0.5 162 12/6/2024
1.0.0.4 187 11/12/2024
1.0.0.3 171 10/23/2024
1.0.0.2 184 9/22/2024
1.0.0.1 185 9/22/2024
1.0.0 189 9/18/2024