Interface do usuário da Web compartilhada
Importante
Este projeto é uma versão experimental. Esperamos que você experimente associações blazor móveis experimentais e forneça comentários em https://github.com/xamarin/MobileBlazorBindings.
Agora que você criou um aplicativo híbrido do Mobile Blazor Bindings que incorpora a interface do usuário da Web (HTML com CSS), este passo a passo mostrará como compartilhar a interface do usuário da Web com um Aplicativo Web Blazor para que você possa fornecer a mesma interface do usuário do aplicativo na Web.
No Blazor, isso é feito colocando a interface do usuário compartilhada em um projeto da Biblioteca de Classes razor ou RCL para abreviar. Isso permite empacotar a interface do usuário da Web e o código como uma entidade reutilizável que pode ser referenciada por vários projetos em uma solução ou compartilhada de forma mais ampla distribuindo-a como um pacote NuGet. Um pacote RCL pode ser referenciado por um aplicativo Mobile Blazor Bindings e um aplicativo Web Blazor para que eles compartilhem exatamente a mesma interface do usuário.
Neste passo a passo, você criará uma interface do usuário reutilizável Email Display em uma RCL e a usará no aplicativo híbrido Mobile Blazor Binding e em um aplicativo Web Blazor.
Observação
Esta página é uma continuação do passo a passo Criar seu primeiro aplicativo híbrido . Recomendamos que você conclua esse passo a passo antes de continuar.
Adicionar uma RCL (Biblioteca de Classes Razor)
Para adicionar uma RCL ao seu aplicativo:
- Clique com o botão direito do mouse no nó Solução no Gerenciador de Soluções e selecione Adicionar/Novo Projeto.
- Localize o tipo de projeto Biblioteca de Classes razor e clique em Avançar.
- Insira um nome para o projeto, como
EmailDisplayUI
e clique em Criar. - Na próxima caixa de diálogo, verifique se as seguintes configurações estão selecionadas:
.NET Core 3.1
, Sem Autenticação e sem suporte para páginas e exibições e clique em Criar.
O novo projeto contém seus próprios arquivos Razor em que você criará a interface do usuário da Web e uma wwwroot
pasta para conter ativos estáticos que fazem parte desse componente.
Adicionar a interface do usuário da Web compartilhada à RCL
Clique com o botão direito do mouse no projeto RCL e selecione Adicionar/Classe
Insira o nome
EmailData.cs
e clique em AdicionarAdicionar um arquivo chamado
Email.cs
à RCLSubstitua seu conteúdo pelo seguinte código C#:
namespace EmailDisplayUI { public class EmailData { public string From { get; set; } public string To { get; set; } public string Subject { get; set; } public bool IsImportant { get; set; } public string Body { get; set; } } }
Renomear
Component1.razor
comoDisplayEmail.razor
Substitua seu conteúdo pela seguinte marcação razor:
<div class="emailDisplay"> <div class="emailHeader"> <div> <label>From:</label> @Email.From </div> <div> <label>To:</label> @Email.To </div> <div> <label>Priority:</label> @(Email.IsImportant ? "High" : "Normal") </div> <div> <label>Subject:</label> @Email.Subject </div> </div> <div class="emailBody"> @Email.Body </div> </div> @code { [Parameter] public EmailData Email { get; set; } }
Altere o conteúdo de
wwwroot/styles.css
para o seguinte:label { font-weight: bold; font-style: italic; } .emailDisplay { background-image: url('background.png'); } .emailHeader { border: 2px solid #808080; padding: 1em; margin: 1em 0; } .emailBody { border: 1px solid #808080; padding: 1em; margin: 1em 0; }
Referenciar a RCL
Para usar a RCL, você precisa referenciá-la do projeto de interface do usuário main para que a interface do usuário possa ser referenciada a partir dele. Você também precisa referenciá-lo dos projetos específicos da plataforma para que os ativos estáticos sejam detectados e incluídos nesses aplicativos.
Em cada um dos projetos FirstBlazorHybridApp, FirstBlazorHybridApp.Android, FirstBlazorHybridApp.iOS, FirstBlazorHybridApp.macOS e FirstBlazorHybridApp.Windows, faça o seguinte:
- Clique com o botão direito do mouse no projeto e selecione Adicionar/Referência de Projeto ou Adicionar/Referência
- Selecione
EmailDisplayUI
e clique em OK
Agora você está pronto para usar a interface do usuário de exibição Email em seu projeto:
No projeto FirstBlazorHybridApp, abra o
WebUI/_Imports_.razor
arquivo e adicione essa linha ao final do arquivo:@using EmailDisplayUI
No projeto FirstBlazorHybridApp, abra o
WebUI/Pages/Index.razor
arquivoAdicione o seguinte conteúdo à parte inferior do arquivo:
<DisplayEmail Email="email" /> @code { EmailData email = new EmailData { From="sender@example.com", To="recipient@example.com", IsImportant=true, Subject="Learn about Blazor", Body="Tutorials are wonderful!" }; }
Adicione uma referência ao CSS de cada projeto específico da plataforma adicionando a linha
<link href="_content/EmailDisplayUI/styles.css" rel="stylesheet" />
à<head>
seção:- Android:
wwwroot/index.html
- iOS:
Resources/wwwroot/index.html
- macOS -
Resources/wwwroot/index.html
- Windows:
wwwroot/index.html
- Android:
Executar os aplicativos para testar a interface do usuário
Agora você está pronto para testar a nova interface do usuário! Clique com o botão direito do mouse em qualquer um dos projetos android, iOS, macOS ou Windows, selecione Definir como Projeto de Inicialização e execute o aplicativo. Você deve ver o carregamento nativo da interface do usuário com a interface do usuário da Web abaixo dela e a interface do usuário da Web deve mostrar a interface do usuário de exibição de email que você criou.
No Simulador do iOS, ele deve ter esta aparência:
[ ! [Email exibir a interface do usuário em execução no Simulador do iOS[(./media/shared-web-ui/ios-shared-ui-inline.png) [(./media/shared-web-ui/ios-shared-ui-expanded.png#lightbox)
Adicionar um projeto Web Blazor
Agora você está pronto para reutilização da interface do usuário criada em um aplicativo Web!
Clique com o botão direito do mouse no nó da solução no Gerenciador de Soluções e selecione Adicionar/Novo Projeto
Selecione o modelo aplicativo Blazor e clique em Avançar
Insira um nome, como
FirstBlazorWebApp
e clique em CriarSelecione a opção Aplicativo Blazor Server,
.NET Core 3.1
, Sem Autenticação, Sim para HTTPS e Não para Docker e clique em Criar.Clique com o botão direito do mouse no projeto FirstBlazorWebApp e selecione Adicionar/Referência de Projeto
Selecione o
EmailDisplayUI
projeto e clique em OKAbra o
Pages/_Host.cshtml
arquivo e adicione a linha<link href="_content/EmailDisplayUI/styles.css" rel="stylesheet" />
à<head>
seçãoAbra o
_Imports.razor
arquivo e adicione essa linha ao final do arquivo:@using EmailDisplayUI
Abra o
Pages/Index.razor
arquivo e adicione o seguinte conteúdo à parte inferior do arquivo:<DisplayEmail Email="email" /> @code { EmailData email = new EmailData { From="sender@example.com", To="recipient@example.com", IsImportant=true, Subject="Learn about Blazor", Body="Tutorials are wonderful!" }; }
Para executar o projeto, clique com o botão direito do mouse no projeto, selecione Definir como Projeto de Inicialização e execute-o. Isso iniciará o ASP.NET Core aplicativo Web e abrirá o navegador da Web padrão para o aplicativo.
Ele deve ter esta aparência no navegador da Web:
[ ! [Email exibir a interface do usuário em execução no navegador da Web[(./media/shared-web-ui/web-shared-ui-inline.png) [(./media/shared-web-ui/web-shared-ui-expanded.png#lightbox)
Recursos adicionais
Para saber mais sobre bibliotecas de classes razor marcar estes recursos:
- bibliotecas de classes de componentes do ASP.NET Core Razor
- Criar interface do usuário reutilizável usando o projeto de biblioteca de classes razor no ASP.NET Core
Resumo
Neste passo a passo, você criou um aplicativo Blazor Hybrid que usa uma RCL (Biblioteca de Classes razor) para uma parte de sua interface do usuário (a exibição de email). Em seguida, você usou essa mesma RCL para hospedar a interface do usuário em um aplicativo Web ASP.NET Core.
Este passo a passo mostrou um exemplo de uma interface do usuário somente leitura, mas as mesmas técnicas podem ser usadas para criar uma interface do usuário arbitrariamente complexa com lógica de aplicativo arbitrariamente complexa para atender a qualquer requisito de aplicativo. Você pode usar padrões como DI (injeção de dependência) para criar serviços específicos da plataforma.