ASP. Desenvolvimento do NET Core 7 MVC | Trevoir Williams | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

ASP. Desenvolvimento do NET Core 7 MVC

teacher avatar Trevoir Williams, Jamaican Software Engineer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Apresentação

      1:59

    • 2.

      Criar conta do GitHub

      2:31

    • 3.

      Instale . SDK NET 7

      3:13

    • 4.

      Instalar o código do Visual Studio (qualquer sistema operacional)

      2:19

    • 5.

      Alternativa - instale o Visual Studio 2022 (Windows e Mac)

      5:55

    • 6.

      Instalar o SQL Server Express (Windows)

      5:21

    • 7.

      Alternativa - instale o SQL Server no Docker (qualquer sistema operacional)

      12:09

    • 8.

      Instale o Microsoft Data Studio

      3:27

    • 9.

      Crie o projeto ASP.NET Core MVC - Código do Visual Studio

      7:01

    • 10.

      Crie o projeto ASP.NET Core MVC - Visual Studio

      6:24

    • 11.

      Código do Visual Studio

      13:21

    • 12.

      Tour de arquivos e pastas

      25:26

    • 13.

      Adicionar projeto ao GitHub

      9:22

    • 14.

      Compreender o arquivo de layout e o Bootstrap

      8:16

    • 15.

      Modificando a página inicial

      17:09

    • 16.

      Adicionando uma página sobre nós

      9:07

    • 17.

      Adicionar ao GitHub

      2:19

    • 18.

      Conecte-se ao banco de dados com o Azure Data Studio

      4:49

    • 19.

      Criar banco de dados

      5:58

    • 20.

      Banco de dados de andaimes com o Entity Framework

      19:34

    • 21.

      Visualizações e controladores de andaimes - parte 1

      12:25

    • 22.

      Entenda o controlador com andaimes

      20:42

    • 23.

      Entenda vistas com andaimes

      15:57

    • 24.

      Visualizações e controladores de andaimes - parte 2

      6:22

    • 25.

      Adicionar ao GitHub

      0:45

    • 26.

      Personalizando visualizações e elementos - visão geral

      1:00

    • 27.

      Adicionando o estilo do Boostrap

      10:19

    • 28.

      Excluir usando o jQuery

      19:15

    • 29.

      Adicionar dados

      7:05

    • 30.

      Adicionando etiquetas personalizadas

      8:58

    • 31.

      Gerenciando alterações de banco de dados

      8:15

    • 32.

      Corrigir erros de sintaxe

      3:22

    • 33.

      Adicionar ao GitHub

      1:08

    • 34.

      Compreender a autenticação

      3:35

    • 35.

      Registre-se para o Auth0

      15:35

    • 36.

      Teste de autenticação

      6:30

    • 37.

      Páginas relacionadas com o usuário de configuração

      11:31

    • 38.

      Retoques finais

      4:06

    • 39.

      Adicionar ao GitHub

      0:19

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

136

Estudantes

--

Projetos

Sobre este curso

Visão geral

Usando o ASP.NET Core 7, o Entity Framework e a interface de linha de comando dotnet, vamos construir um sistema de gestão de escola pequena enquanto aprendemos conceitos-chave no desenvolvimento do ASP.NET MVC. Você também vai aprender a usar ferramentas de desenvolvimento populares, estruturas e bibliotecas como o Bootstrap 5 e o jQuery para desenvolver um aplicativo dinâmico e fácil de usar. Este curso vai mostrar como usar ferramentas de código aberto e de plataforma cruzada para desenvolver um aplicativo web baseado em dados que pode ser executado em qualquer sistema operacional. A melhor parte é que nossas ferramentas também podem ser usadas em qualquer sistema operacional.

Por que aprender. NET 6 / 7

Microsoft . NET é uma estrutura de desenvolvimento de código aberto e multiplataforma que impulsiona a tecnologia de negócios de muitas das principais corporações em todo o mundo. É a tecnologia predominante usada para impulsionar a tecnologia de negócios em escala empresarial. Empresas escolheram. NET por sua escalabilidade, confiabilidade e suporte comprovados

C#, a linguagem de referência de . NET, está entre as línguas mais usadas hoje. É uma linguagem de programação de uso geral que pode lidar com quase qualquer problema, desde o desktop até aplicativos da web dinâmicos. Como tal, há uma alta demanda em todo o mundo por . Desenvolvedores de NET em vários setores, o que significa que mais empregos estão disponíveis para candidatos com uma fundação construída sobre . Tecnologias NET.

No final deste curso, você deve ser capaz de:

  • Construa uma aplicação web totalmente baseada em dados

  • Use a interface de linha de comando dotnet e tarefas completas como:

    • Andaime de um banco de dados usando o Entity Framework Core

    • Gerando vistas e controladores

    • Executar e depurar uma aplicação.

    • Gerencie pacotes em um projeto.

  • Entenda como modelos, visualizações e controladores se combinam para facilitar um aplicativo da web

  • Use e manipule modelos de dados e contextos de banco de dados.

  • Entenda como adicionar visualizações e ações a um controlador

  • Use o Bootstrap 5 para manipular a aparência e a sensação de uso do aplicativo na web.

  • Use o GitHub para gerenciamento de controle de origem.

  • Use ferramentas de desenvolvimento populares entre plataformas como:

    • Código do Visual Studio

    • Estúdio de dados do Azure

    • Docker

  • Adicione autenticação do OpenID Connect usando o Auth0

Conteúdo e visão geral

Para fazer este curso, você deve ter algum conhecimento de HTML, CSS, e Programação orientada a objetos, se não com o C#. Mesmo que você tenha pouca exposição ao . pilha de desenvolvimento do NET, este curso é amigável para iniciantes e cheio de dicas de desenvolvimento.

Este curso tem várias horas de conteúdo premium, mas é inteligentemente dividido para destacar atividades relacionadas com cada módulo no aplicativo que está sendo construído. Também vamos analisar erros de resolução de problemas e depuração à medida que avançamos, implementando as melhores práticas, escrevendo lógica eficiente e entender por que os desenvolvedores fazem as coisas da maneira como fazem. Seu conhecimento vai crescer, passo a passo, ao longo do curso e você será desafiado a ser o melhor que você pode ser.

Conheça seu professor

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Professor

Habilidades relacionadas

Desenvolvimento Desenvolvimento web
Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Apresentação: Olá e bem-vindo a este curso, desenvolvimento multiplataforma SP dotnet Core. Sou seu instrutor para voir Williams e sou engenheiro de software e palestrante há mais de uma década. Neste curso, seguiremos algumas etapas simples que podem ser replicadas em qualquer plataforma. Isso mesmo. Você fará este curso se estiver usando Mac OS, Linux ou Windows. E você poderá acompanhar e criar um aplicativo asp.net Core MVC, aprenderá coisas como o Entity Framework Core e adotará uma abordagem inicial de banco de dados, que estávamos analisando Bootstrap five e bibliotecas jQuery. Faremos a integração com o auth zero, que é um provedor do OpenID Connect. E ao fazer tudo isso, você se familiarizará com o GitHub. Saiba que as ferramentas de desenvolvimento que usaremos são muito importantes, são muito importantes, dispostas a algo mais sombrio, para que possamos hospedar uma instância do SQL Server independentemente do nosso sistema operacional, mesmo que o SQL O servidor foi projetado principalmente para distribuição do Windows. Também usaremos o Visual Studio Code como seu Data Studio e a CLI dotnet, , mais uma vez, trabalharemos em qualquer sistema operacional. Saiba, só para nos concentrar enquanto estamos usando o Visual Studio Code e o Azure Data Studio. Ferramentas de desenvolvimento multiplataforma tão versáteis e muito leves, então não importa que tipo de especificações sua máquina tenha. Eles não usam tantos recursos quanto seus colegas, como o Visual Studio 2022 e o SQL Server Management Studio. Assim, você pode usar essas ferramentas em uma máquina menos potente. Eles podem ser usados novamente em qualquer sistema operacional. Eles oferecem integrações claras com vários serviços de terceiros e são poderosos o suficiente para criar qualquer coisa. Agora espero que você esteja tão empolgado quanto eu e mal posso esperar para vê-lo no curso. 2. Criar conta do GitHub: Tudo bem, pessoal, então, nesta lição, vamos passar por processo de configuração muito simples de criar uma conta no GitHub. Portanto, o github é sem dúvida a maior plataforma de codificação social. É um dos fornecedores de bens mais populares. E é de propriedade da Microsoft e é gratuito para código aberto e desenvolvimento pessoal. Você também pode ter projetos privados lá e iniciar este curso, usaremos o GitHub. Então, se esta é sua primeira vez, talvez você esteja ouvindo falar do gerenciamento de controle de fontes e do GitHub. E você realmente quer ter essa experiência. Não se preocupe, vamos usá-lo neste curso e você aproveitará essa experiência. Então, para começar, acesse github.com e, a partir daqui, você pode se inscrever. Então, estou supondo que você ainda não tenha um cone a. Portanto, se você se inscrever, receberá um formulário muito simples em que eles solicitam seu endereço de e-mail para que você possa fornecê-lo e continuar. E, na verdade, acho que você só precisa do seu endereço de e-mail e senha, então eu já tenho uma conta, mas deixe-me tentar inserir outro endereço de e-mail. E então você cria uma senha. E depois de continuar criando essa senha, eles querem um nome de usuário. Você pode criar esse nome de usuário. Deixe-me criar algo arbitrário e continuar. E então eles perguntarão se você gostaria de algumas coisas promocionais. Continuar. E eles são cheques capturados. E, basicamente, até o final de tudo isso, ele enviará um e-mail de verificação. E depois de se verificar, você pode fazer login. Então, vou entrar e mostrar como seria essa experiência. E depois de fazer login com seu nome de usuário e senha ou seu endereço de e-mail e senha, você verá uma tela semelhante a esta. Eu já tenho alguns repositórios, então você pode não ter nada à esquerda, então tudo bem. É por isso que estamos aqui. Mas você verá que eu tenho alguns repositórios. E esse é o meu perfil. Se você precisar acessar meu perfil, você sempre pode acessar github.com e cortar meu nome de usuário, que é simplesmente meu nome. E seria algo parecido para você e para qualquer pessoa que queira navegar até seu perfil todos os repositórios nos quais você trabalha depois de tornados públicos podem ser acessados. E essa é a beleza do GitHub. Isso ajuda você a contribuir com outros projetos e compartilhar seus projetos que os de outras pessoas também possam contribuir para eles. Depois de configurar sua conta, você pode prosseguir para a próxima lição. 3. Instale . SDK NET 7: Tudo bem, pessoal, então continuamos configurando nosso ambiente. E a próxima etapa é instalar as redes de pontos de um SDK. Você pode chegar aqui simplesmente acessando.net.microsoft.com ou simplesmente google.net SDK. Tudo bem, acho que é a coisa mais fácil de fazer, basta google.net. Então, tenho certeza de que o SDK e o primeiro resultado da pesquisa levariam você a esta página. Não. Dotnet seven é o lançamento mais recente no momento da gravação, no entanto, o termo padrão de lançamento, que significa que ele sairá de moda quando o dotnet eight for lançado. Também temos a versão da ferramenta de seis pontos, que é suporte de longo prazo. Então, muito do que faremos neste curso, mesmo que usemos dotnet seven, ele será mais ou menos compatível com seus seis, exceto talvez algumas frases em C nítido, conjuntos. Com certeza vou apontar onde o código será diferente entre o que o dotnet seven oferece e o que podemos fazer no dotnet six. No momento desta gravação, no entanto, o dotted seven é o melhor e mais recente, então vamos usá-lo e você pode ficar à vontade para continuar usando o dotnet seven. Então, para começar, você vai querer instalar o SDK. Agora, há duas coisas que você vai querer instalar. Você vai querer instalar o SDK para recursos de desenvolvimento. E, claro, você pode escolher seu sistema operacional adequadamente. Portanto, se você estiver em uma máquina Windows, convém usar a versão de 64 bits e escolher as versões para Mac ou Linux adequadamente. Mas, para fins de hospedagem, você também gostaria de instalar o runtime. Assim, você também pode instalar o pacote de hospedagem para Windows ou a versão apropriada com base no seu sistema operacional. Assim, você pode baixar e instalar esses dois. Dito isso, usaremos o Visual Studio Code porque nós, Visual Studio Code , somos multiplataforma. Não quero atender a todos os sistemas operacionais, aos monges, ao Mac e ao Windows. Então, usaremos o Visual Studio Code. No entanto, se você estiver em uma máquina Windows e preferir usar o Visual Studio, que é um IDE totalmente poderoso, muito , muito poderoso, você pode simplesmente ficar com as janelas e simplesmente fazer o download e instale o Visual Studio 2022, que virá com o SDK integrado. Então eu só estou jogando isso lá fora, certo? Então, se você estiver usando o Visual Studio Code, que é muito mais leve e compacto. E usaremos muitos comandos da CLI dotnet. Em seguida, você pode instalar o SDK manualmente. Se você quiser usar o Visual Studio 2022. E mostrarei como configurar o Visual Studio 2022 em uma lição subsequente, que você possa realmente pular a etapa de download do SDK. No entanto, eu recomendo que você obtenha o tempo de execução de qualquer maneira. Então, depois de baixá-los e instalá-los, e é uma instalação simples, basta clicar em Avançar, Avançar, Avançar plantados em estrelas e fechar a janela. Em seguida, você pode prosseguir para a próxima lição em que vamos configurar o Visual Studio Code. 4. Instalar o código do Visual Studio (qualquer sistema operacional): Tudo bem, pessoal, bem-vindos de volta. Então, instalamos nosso SDK e a próxima etapa é instalar o Visual Studio Code. Ou o Visual Studio Code é um IDE muito flexível e leve fornecido pela Microsoft. Além de tudo isso, é gratuito e multiplataforma, então podemos usá-lo no Mark, no Windows ou no Linux. Estou usando uma máquina Windows, então, é claro, eu gostaria de fazer o download para Windows, mas certifique-se de escolher a que é mais apropriada para, você sabe, baixar e instalar é muito fácil. Você receberá um pacote MSI que, depois de clicar duas vezes nele, iniciaremos o instalador e, após alguns cliques, ele instalará todos os binários e estará em sua máquina. E só como prévia, isso é o que você pode esperar. Você pode esperar algo assim. Já instalei isso há algum tempo e usei vários projetos. Então você pode ver que eu tenho alguns ícones que você pode não ter prontos para uso. Por exemplo, se esta é sua primeira vez, você pode não ter nada menos que recente. Mas você sempre pode iniciar Open File, Open Folder, é verdade. E eu obtenho o repositório para sua máquina. E então, ao lado, você tem a janela do Explorer. Você pode pesquisar, você pode fazer algumas coisas de controle de fonte. Você pode executar e depurar. Então você tem o Explorer e extensões remotos. E a outra coisa é que eu tenho aqui alguns outros plug-ins que eu tenho de projetos paralelos para este curso. Esses não são absolutamente necessários. Mas vou me certificar de apontar as coisas que você precisará à medida que avançarmos e como você pode configurar seu ambiente e otimizá-lo para o projeto em que trabalharemos. Então, depois de instalar o Visual Studio Code, você está pronto para começar. Ele tem muitos recursos integrados que exploraremos ao longo do caminho. No entanto, se você preferir a ideia de usar o Visual Studio, porque o Visual Studio Code exige que usemos muitos comandos de interface de linha de comando. E o Visual Studio realmente faz um bom trabalho ajudar você a clicar ao ajudar você a clicar e realizar algumas dessas coisas. Então, mostrarei como instalar o Visual Studio 2022, e isso será na próxima lição. 5. Alternativa - instale o Visual Studio 2022 (Windows e Mac): Tudo bem, pessoal, então, nesta lição, vou mostrar a vocês um fim de semana inteiro configurando o Visual Studio em nossa máquina. Visual Studio é o IDE principal. E ID é a abreviação de ambientes de desenvolvimento integrados, como o IDE principal fornecido pela Microsoft. É um IDE verbal completo. Isso nos permite fazer tudo, desde a concepção até a implementação e a entrega de nosso aplicativo. E está disponível para vários sistemas operacionais, embora vários, ou seja, Windows e Mac OS Na verdade , neste site, que é Visual studio.microsoft.com, você poderia realmente ir Também baixei o Visual Studio Code, que é o irmão mais novo multiplataforma do Visual Studio. Agora, se você quiser obter o Visual Studio, você tem três opções. Você tem a Community Edition, profissional e empresarial, comunidades gratuitas para alunos de código aberto e individuais ou para usos acadêmicos. E então, profissional e empresarial são mais para empresas ou para práticas de desenvolvimento comercial. Tudo bem? Então, a qualquer momento deste curso, usaremos apenas a comunidade porque essa é uma experiência de aprendizado para todos nós. Eles ajudam você a escolher qual ferramenta é melhor para você. E tenho certeza de que, quando anotarem ciclicamente, eles sugerirão o Visual Studio Code para Linux. Mas então, se eu escolher Mark e começar a selecionar algumas das coisas com base no que eu seleciono o MAC do Visual Studio Code. Ou eles podem ver o Visual Studio para Mac. E então, se eu escolher o Windows, é mais do que provável, não importa o que eu escolha, dirá que o Visual Studio é a melhor seleção, ok, mas não para Java. Tudo bem? Portanto, isso pode ajudá-lo a tomar uma decisão sobre quais ferramentas podem ser melhores para você. Dito isso, como eu disse, Visual Studio Code é um pouco mais compacto, então ele usa menos recursos e é mais fácil de usar para operações de edição rápidas. Visual Studio é muito poderoso e é usado para muitas coisas avançadas. Então, nesta lição, vou mostrar o que você pode esperar ao instalar o Visual Studio. Então, quando, em primeiro lugar, você gostaria de baixar o Visual Studio. Então, quando você baixa a comunidade, o que você obtém é um instalador. E depois de ter esse instalador e aprender, você terá uma janela semelhante a essa. Eu já o tenho instalado, então estou apenas mostrando alguns dos módulos e qual é a aparência da interface do usuário e como você pode proceder a partir daqui. Para este curso, realmente precisamos apenas do asp.net e do desenvolvimento web, o que chamaremos de carga de trabalho. Então, cada uma dessas caixas representa nossa carga de trabalho e nos dá acesso aos diferentes tipos de projetos que estão disponíveis para diferentes tipos de atividades de desenvolvimento, certo? Então, asp.net e desenvolvimento web, criaremos um aplicativo dotnet em aplicativos web. Então, definitivamente queremos isso. E, na verdade, incluirá o SDK. Sdk, bem como outros modelos de projeto. As ferramentas que precisamos para o desenvolvimento web. Dito isso, se você estiver interessado em ter outras cargas de trabalho, como para desenvolvimento de desktops dotnet ou desenvolvimento de dotnet Maui. Então, você sempre pode usar as diferentes cargas de trabalho que deseja ter. Obviamente, quanto mais você clicar, mais espaço ela ocupará em sua máquina. Portanto, tenha muito cuidado. No entanto, neste momento, mais uma vez, tudo o que realmente precisamos para este curso é o asp.net e as cargas de trabalho de desenvolvimento web. Então você pode prosseguir e pegar isso e clicar em Instalar, que é o que apareceria aqui em vez de instalado durante o download. E depois de fazer isso, Visual Studio assumirá o controle, baixe todas as ferramentas necessárias para essa carga de trabalho. E então isso permitirá que você lance resultados para eles. Depois. Ao iniciá-lo, você pode ser solicitado a fazer o login. Assim, você pode usar sua conta ativa se tiver uma ou criar uma conta ativa e usar essa conta para a instalação do Visual Studio. Agora, só para dar uma prévia rápida da aparência da interface de usuário do Visual Studio 2022. Vou continuar com todo o cabo para que ele inicie a interface do usuário. E o que temos aqui seria um Solution Explorer, que listará todos os arquivos e pastas que farão parte do seu projeto quando o criarmos. E você pode continuar e executar o projeto permanece anexado, não, porque está vazio, podemos executar o projeto. E essa interface de usuário realmente ganha vida quando entramos, se você tiver muitas integrações, como com o Git, e pudermos acessar nossas coisas do GitHub aqui da mesma forma que podemos fazer isso no Visual Studio Code. E se você quiser usar o Visual Studio, tudo bem. Nas primeiras lições, mostrarei os paralelos entre o uso Visual Studio Code e o uso do Visual Studio. Então, pelo menos você pode ter uma ideia de qual deles pode ser melhor. Mas, durante a maior parte do curso, usaremos o Visual Studio Code apenas porque ele é multiplataforma. Portanto, independentemente do sistema operacional que você está usando, você pode acompanhar sem problemas. Então é isso para Hollywood configurar o Visual Studio, é muito fácil. E se, em algum momento, você quiser mais cargas de trabalho, sempre poderá voltar ao instalador. Portanto, você pode simplesmente pesquisar em sua máquina o Visual Studio Installer. Isso o levará de volta a esse ponto. E você pode selecionar ou desmarcar as cargas de trabalho conforme necessário. 6. Instalar o SQL Server Express (Windows): Bem-vindo ao primeiro vídeo deste curso, introdução ao SQL Server 2017. E hoje vamos analisar o download e a instalação desse software. Agora, um banco de dados é basicamente uma coleção lógica de dados relacionados. Resumindo, se você tem experiência anterior com bancos de dados, provavelmente veio com o Microsoft Access ou o MySQL. E você só quer estender seu conhecimento além disso. E mesmo que você não tenha nenhum conhecimento prévio de bancos de dados, este é um excelente curso para que você se familiarize com o que os bancos de dados são capazes de fazer, qual preparação precisa feita e como você pode fazer iniciar sua jornada para se tornar um administrador de banco de dados ou simplesmente manipular dados em um banco de dados é, como eu disse antes, exploraremos todos esses conceitos usando o Microsoft SQL Servidor 2017. E eu já a tenho na minha tela, a página para download. Por isso, incluí o URL conforme descrito aqui nas notas da aula. E isso faria com que você baixasse o mecanismo de banco de dados expresso do Microsoft SQL Server 2017. E a breve descrição é que é um sistema de gerenciamento de banco de dados poderoso e confiável que permite criar sites leves e aplicativos de desktop. Então isso é muito bom, muito decente é um ponto de partida decente. Se você não tem aquela máquina de alta especificação e de última geração, você só tem uma máquina normal, você só quer começar. Essa é uma excelente opção. Há outras adições que você provavelmente veria em sua pesquisa, mas se você seguir este link, ele eliminará todo esse ruído e todas as outras edições. E podemos começar com o Express. Você pode clicar nesse download e iniciar inicialmente o procedimento de download. E outro software em que estamos interessados é o SQL Server Management Studio. Agora, o Management Studio será sua porta de entrada para realmente interagir com o banco de dados, interrogar os dados e escrever o que chamamos consultas em uma linguagem com o Cloud SQL. Vamos abordar todas essas coisas no devido tempo. Mas, por enquanto, você pode seguir esse URL mais uma vez nas notas da aula. E podemos simplesmente clicar nesse botão Download para inicializar o download, o que pode levar algum tempo. É um arquivo bem grande. Assim que o download for concluído, nos reuniremos novamente e, em seguida, passaremos pelo processo de instalação. Ei pessoal, bem vindos de volta. Agora que nossos downloads terminaram, começaremos instalando nosso mecanismo SQL Express. Então, basta clicar nesse arquivo de instalação, clicar em Executar e, em seguida, seremos recebidos com essa tela de instalação. Podemos clicar em básico. O cliente permitiria que você selecionasse determinados recursos. Neste estágio, não precisamos fazer isso. Podemos simplesmente usar o básico podemos seguir em frente e concordar com os termos e condições. Você pode lê-lo até o fim, se desejar. Se você tiver outras ideias , talvez queira alterar esse diretório. Caso contrário, você também pode usar como padrão. E você pode ver aqui que de 6 GB, nós realmente só precisamos de 300 mb. Então, vou clicar em Instalar. E isso pode demorar um pouco, então nos reuniremos novamente quando isso terminar. Ok, então, no final desse procedimento de instalação, você verá que conseguiu fazer essa instalação. E então eles te dão algumas informações. Eles fornecem uma cadeia de conexão. Então, se você quisesse desenvolver um aplicativo sobre esse banco de dados, provavelmente gostaria de prestar atenção a essa parte. Bem, isso não é realmente necessário agora. E eles apenas fornecem os caminhos para os arquivos de log e outros bits essenciais do aplicativo. Outra parte essencial desse processo de instalação, conforme mencionado anteriormente, é instalar o sequel management server studio. Então, nesta instalação da Express Edition, eles realmente oferecerão a opção de dizer instalar o SSMS. E isso realmente abrirá seu navegador e navegará até, bem, imaginei que esse discurso, o link para esta página já está incluído nas notas da aula. E aqui, a partir daqui, você pode fazer o download direto para o Management Studio. Então, se você não fez isso antes, você pode simplesmente seguir este link e obter esse arquivo já, baixá-lo aqui. Então, vou iniciar esta instalação. Tudo isso iniciará o instalador e, na verdade, eles fornecerão apenas um botão para clicar no qual está instalado. Obviamente, você pode mudar esse local se tiver outras ideias para o caminho. Caso contrário, você pode deixá-lo como padrão e clicar em Instalar. Isso também pode levar algum tempo, então nos reuniremos novamente no final desse processo. Ok, então nossa instalação está concluída e tudo o que precisamos fazer é reiniciar para continuar. Então, podemos fazer isso rapidamente. E nós, no próximo vídeo, começaremos a ver como começamos a juntar tudo. O que é um banco de dados e por que aprender essa habilidade é tão importante. Fique atento. 7. Alternativa - instale o SQL Server no Docker (qualquer sistema operacional): Atualmente, o Microsoft SQL Server só pode ser usado quase exclusivamente em máquinas Windows. Portanto, as etapas de instalação anteriores podem não ter funcionado bem Se você não estiver usando uma máquina Windows, se estiver usando Mac ou Linux, não se preocupe, ainda há uma solução para você. A solução número um seria que você pode usar uma máquina virtual, para poder usar o VMware ou alguma outra ferramenta que suporte a virtualização. E você pode ativar uma máquina virtual que tenha um sistema operacional Windows e depois usá-la. Saiba que isso pode exigir muitos recursos. E eu não vou fazer você passar por tudo isso apenas para usar um único software. A alternativa a um ambiente virtualizado para Windows seria usar o Docker, que é o que eu tenho na minha tela. Mais escuro, você pode facilmente chegar aqui acessando docker.com. Darker é um aplicativo muito rápido que nos permite usar o que chamamos contêineres em vez de um ambiente virtualizado completo. Então, o que podemos fazer é usar Docker para simular o ambiente necessário e somente o ambiente necessário para um determinado aplicativo seja executado sem precisar de todo o sistema operacional. Então, o que vamos fazer é usar o Docker para simular um ambiente para o SQL Server. E então poderemos nos conectar ao SQL Server apenas para ver, mesmo se você não estiver usando uma máquina Windows. Agora, a primeira coisa que você notará é que ele está disponível para todos os sistemas operacionais, praticamente certo? Portanto, se você estiver usando o Windows, ainda poderá usar o Docker. Se você tiver um dispositivo Apple ou baseado em Linux ou um dispositivo baseado em chip Intel, você pode fazer o mesmo. Nós instalamos o Docker. Então vá em frente, baixe e instale. Eu já o tenho instalado na minha máquina Windows, mas depois de instalá-lo, o que você terá é acesso aos comandos da linha de comando do Docker. Depois de instalá-lo, clique em pausar, deixe-o instalar e, em seguida, você poderá continuar. Eu encorajaria você a lançar seu terminal. Então, mais uma vez, estou usando uma máquina Windows, mas seu terminal no Linux ou Mac OSX seria muito parecido com este. E você pode simplesmente executar o comando docker apenas para ter certeza de que ele está instalado. E se você ver algo parecido com isso, eles não tinham acesso aos comandos do Docker CLI. Tudo bem, então o que queremos fazer neste momento é executar um comando chamado docker. Puxar é ampliar um pouco para que seja mais fácil de ler. Então, vamos fazer docker, pull, docker pull. Vamos extrair isso que chamaremos de imagem. Portanto, o Docker tem arquivos predefinidos que revestem o ambiente necessário para um aplicativo específico. E elas são chamadas de imagens. A imagem que queremos é a imagem do Microsoft MS SQL Server. Então, vamos fazer um docker, puxar essa imagem para que você possa clicar em pausar, certifique-se de digitá-la do jeito que eu tenho. E quando você pressiona Enter, ele diz: “Ok, estou recebendo as últimas novidades e, em seguida, você verá o download. Eu já tirei essa imagem, então eu já a tenho na minha máquina. Mas você verá que está puxando e, em seguida, começará a mostrar métricas do carregamento concluído. E na verdade seria algo mais parecido com isso. Portanto, esta é uma captura de tela que tirei antes de fazer o download. E você vai ver que isso vai gerar um monte de linhas parecidas com essas. E você terá essas tags de download. Então, uma vez concluído, o próximo passo é realmente executá-lo. Para executá-lo, você precisa desse comando. Então, vamos dizer Docker, run, depois hífen e, e isso fará com que o eula aceite. Então, o que acontece é que o SQL Server geralmente tem um desses documentos que você precisa para aceitar os termos e condições. Então, estamos apenas colocando em um parâmetro que, sim, aceitamos os termos e condições. E depois outro que diz a senha SA. Então, se você analisou o processo de instalação quando estamos usando o Windows, podemos usar a autenticação do Windows para nos conectarmos ao banco de dados, certo? Então, tudo o que precisamos é de um nome de máquina. Podemos usar um usuário do Windows, o usuário atual do Windows, autenticação do Windows e apenas nos conectar. Agora, como isso é mais escuro e é um contêiner, não há janelas ou portas ou Mark ou não há autenticação Linux. Portanto, não é realmente possível se conectar usando o usuário padrão do seu computador. Portanto, essa etapa é aplicável se você estiver usando Windows, mac, Linux etc. Portanto, o que precisamos fazer é especificar uma senha SA. Portanto, AC é o usuário padrão, o que significa administrador do sistema ou administrador do sistema. Toda vez que você instala um mecanismo de banco de dados para o Microsoft SQL Server, você recebe esse usuário de redação. Vamos configurar essa senha SA. E você pode inserir qualquer senha que desejar. Estou apenas inserindo uma senha forte aqui. E isso é realmente possível que você veja em outras demonstrações que você pode assistir em qualquer lugar na Internet. Portanto, essa senha não é necessariamente exclusiva para mim ou para este exercício. Você pode inserir qualquer valor de senha com o qual se sinta confortável. E você se lembra, estou apenas dividindo a palavra senha forte, é claro, com caracteres, números e algumas letras maiúsculas. Em seguida, especificamos a porta. É importante atravessar o porto aqui na frente . O porto. Na outra extremidade do cólon está a porta para a qual ele será mapeado. O que isso significa é que o SQL Server por padrão, transmite a partir da porta 1433, que é a porta padrão. Portanto, sem fazer nada, especificar qualquer porta ou qualquer coisa, sempre passará por 1433 uma vez ou se conectará. No entanto, o Docker está sendo executado em seu próprio ambiente especializado, então precisamos mapear. Essa é a porta padrão e, em seguida, essa é a máquina de portas que desejará passar por um túnel para chegar a esse esporte. Então, na verdade, você poderia simplesmente deixar isso como 14331433. Se você não quiser ter o SQL Server já instalado e estiver executando Mac e Linux, então 14, 14, 33 está bem. Você não precisa fazer nada extra. Você pode simplesmente se conectar. No entanto, porque estou usando uma máquina Windows e adiciono para alterar minha porta porque 1433 já está ocupado pela minha instalação nativa do SQL Server. Então, estou apenas mostrando que você pode fazer 14, 14, 33 por padrão. Ou você pode colocar sua própria porta específica, se desejar. Em seguida, a próxima e última coisa é dizer o hífen D e, em seguida, especificamos a imagem que queremos executar. Então, basicamente, estamos dizendo que o docker executa essa imagem e certeza de que todos esses parâmetros intermediários estão configurados. Isso é essencialmente o que acabamos de fazer. Então, quando você pressiona Enter e só você, esse para executar, o que ele fará é iniciar aquela imagem dentro da interface mais escura. Na interface mais escura, você verá algo parecido com isso. Ele vai aparecer em contêineres. E você pode ver aqui que existem vários contêineres, certo? Eu até tenho outro contêiner SQL que está adicionando sal de antes. E aqui está o novo de eu que acabei de executar esse comando. Então, ele criou um novo contêiner para o Microsoft SQL Server. E ele está em execução no momento e está sendo executado há 30 s. E a porta que ele usa é 1.400, que se você não alterasse isso e usasse o 1433 padrão , seria 1433. Você sempre pode parar e iniciar os contêineres. Você também pode excluir e observar o que está acontecendo. Assim, você pode abri-lo no terminal e interagir com ele aqui. Você também pode inspecionar para ver a integridade e ver algumas das configurações. Então, essas são algumas das variáveis de ambiente que configuramos. Quais são os parâmetros que passamos? Depois, você também pode ver os registros. Veja aqui que parece ter sido iniciado com sucesso. Então, depois de confirmar todas essas coisas agora, eu gostaria de me conectar. Agora, para Windows, podemos usar o Microsoft SQL Server Management Studio. No entanto, o Management Studio não está necessariamente disponível no Linux e no Mac. Portanto, a alternativa aqui seria obter o Azure Data Studio. Você pode simplesmente fazer uma pesquisa no Google e seguir em frente e seguir a documentação da Microsoft até o Azure Data Studio. Data Studio é uma ferramenta de banco de dados multiplataforma para profissionais. E pode funcionar em Windows, macOS, Linux. Assim, você pode instalar a versão apropriada para si mesmo. E, claro, você pode analisar qualquer aviso apenas para se certificar de que está em um estado compatível. Tudo bem? Então, o fato é que o Data Studio pode fazer maioria das coisas que o Management Studio pode fazer, especialmente dentro dos limites deste curso, em que estamos aprendendo sobre desenvolvimento e consultas de bancos de dados e tal. A experiência final será um pouco diferente. Então, certas coisas não estarão no mesmo lugar e podem não ser chamadas da mesma coisa. Para se conectar. Deixe-me mostrar como nos conectamos a. Então você pode ver que conectei algumas unidades ao longo do tempo ou, ao contrário, ela precisa de uma base, mas aqui vou conectar Microsoft SQL Server e, em seguida, o servidor aqui será a vírgula do host local, a porta que você especificou. No meu caso, especifiquei 1.400 na minha varanda. Você também pode ter especificado 1.400 ou o que você especificou. Quando configuramos, o contêiner deve funcionar e, se você não se lembra, pode simplesmente voltar e dar uma olhada. Você especifica essa porta. E então não a autenticação do Windows, mas o login do SQL. E nosso nome de usuário é SE, e nossa senha é a senha que digitamos. E mais uma vez, se você não lembrar qual é essa senha, você sempre pode ir até o contêiner e clicar em Inspecionar. E eu posso simplesmente copiar esse valor e depois colá-lo. E então, para o futuro, basta lembrar a senha. Então, podemos nos conectar. Então, isso é um sinal de uma conexão bem-sucedida. Eu, você vê aqui essa versão do sistema operacional, então eu ainda estou na minha máquina Windows. Mas a versão do sistema operacional que ele detectou é o Ubuntu. Então é isso que o contêiner está fazendo. Ele está sendo executado em um ambiente Linux, mas está simulando o ambiente, ambiente exato necessário para que o SQL Server possa ser executado. Se eu expandir bancos de dados, você verá que está vazio. E então, basicamente, tudo o que podemos fazer a partir do Management Studio, podemos fazer a partir daqui. Uma coisa que você pode notar, porém, é que algumas das ferramentas são limitadas. Então, no Management Studio, eu posso facilmente, ou mais facilmente, clicar com o botão direito do mouse e dizer, fazer certas coisas, como criar um novo banco de dados e assim por diante. No entanto, no gerenciamento do Data Studio , provavelmente ele precisará ser programado. É algo que você teria que controlar e criar um novo arquivo de script. E então, para criar um novo banco de dados, você teria que dizer criar banco de dados. E então diga o nome, digamos teste db, depois F5 e então ele é lançado. Então você pode atualizar a lista de bancos de dados e então você verá o TSDB, certo? Mas, neste curso, veremos como fazer os dois scripts e usar a interface gráfica do usuário no Management Studio. Portanto, você deve ser capaz de acompanhar muito bem. E, de qualquer forma, se você tiver dificuldades, sinta-se à vontade para entrar em contato. 8. Instale o Microsoft Data Studio: Oi pessoal. Nesta lição, veremos como podemos baixar e instalar o Azure Data Studio. Agora, o nome é meio enganador porque começa com o Azure, mas não é uma ferramenta exclusiva do Azure. É uma ferramenta de sistema de gerenciamento de dados multiplataforma e nos permite conectar-se a qualquer tipo de fonte de dados. Bem, pelo menos a fonte de dados do Microsoft SQL Server, seja ela hospedada localmente, está hospedada no Microsoft Azure. Há outras coisas que podemos fazer com a ferramenta, mas não necessariamente as faremos neste curso. A razão pela qual estamos optando por essa ferramenta, no entanto, é o fato de ser uma ferramenta de banco de dados multiplataforma e podermos trabalhar em Windows, Mac OS ou Linux. Portanto, lembre-se de que estamos focando no desenvolvimento multiplataforma. Então, estou tentando mostrar a você todas as ferramentas que podem nos ajudar a atingir nossos objetivos, independentemente do nosso sistema operacional. Tudo bem, então, para começar, você pode, na verdade, apenas o Google Data Studio e provavelmente, ou você pode dizer um download do Studio com zero dados. E isso o levará a este site, que está no Microsoft Learn. Tudo bem. E a partir daqui, você pode rolar para baixo até as diferentes opções de download. Então, para o Windows, temos essas opções. E o instalador do usuário é um instalador simples, que seria uma instalação muito semelhante à que tínhamos com o Visual Studio Code. Temos o instalador do macOS e temos a maneira Linux de colocar os arquivos em nosso sistema. Portanto, se você precisar de uma instrução ou dinheiro, basta rolar para baixo e ver a seção aqui para a instalação do Windows. E você pode ver que você pode simplesmente baixar o instalador para Windows e prosseguir com a configuração. Ou você pode baixar um arquivo zip e descompactá-lo em um local e usá-lo diretamente de lá. Tudo bem, vou apenas percorrer a opção e aqui está a seção de instalação do MAC OS. E então aqui está a seção de instalação do Linux. No final das contas, acabaremos com um aplicativo parecido com esse. Ao obtê-lo, você poderá mudar seu tema e tudo mais. Eu tenho o tema sombrio em execução. Você sempre pode alterar esse tema de cores, se desejar. Mas, em última análise, isso nos permite conectar-se a qualquer tipo de fonte de dados. E aqui eu tenho uma atualização pendente. Eu farei isso mais tarde. Mas podemos conectar nossos diferentes servidores , independentemente de estarem no host local. Portanto, esse padrão é meu host local, instância do SQL Express. Eu também tenho uma instância do docker disponível para mim. Agora várias instâncias na Microsoft, todos os meus servidores estão lá. Tudo bem? E podemos fazer algumas coisas legais. Podemos pesquisar, fazer alguns cadernos e explorar coisas de controle e extensão de fontes. Como eu disse, ele tem outras ferramentas integradas para outras atividades relacionadas não entrem nelas. Mas, por enquanto, é uma ferramenta bastante simples que nos permite escrever nossas consultas. Podemos criar nosso banco de dados de forma bastante simples. Tudo bem, então, quando voltarmos, começaremos com o desenvolvimento. 9. Crie o projeto ASP.NET Core MVC - Código do Visual Studio: Bem vindos de volta, pessoal. Nesta lição, criaremos nosso aplicativo web asp.net Core MVC. Agora, a primeira coisa que você vai querer fazer é iniciar seu terminal. O terminal pode parecer diferente com base no sistema operacional em que você está. Se você estiver no Linux, ele terá uma aparência diferente de se não estiver marcado. Bem, muitas vezes, na verdade, parecerá muito parecido. Mas se você estiver em uma máquina Windows, procure PowerShell ou o Command Prompt. Estou usando um PC com Windows, então na verdade tenho essa janela chamada terminal, que na verdade me dá acesso aos diferentes tipos de terminais que tenho na minha máquina. Então você vê aqui que eu tenho uma guia chamada Windows PowerShell, outra guia chamada prompt de comando. Mesmo que você seja uma janela que não tenha necessariamente essa aparência, você pode fazer tudo o que estamos prestes a fazer se estiver usando uma máquina Windows, usando o prompt de comando, de qualquer forma, da mesma forma os comandos que executaremos na minha máquina funcionarão em qualquer sistema operacional. Então, vou fechar uma dessas guias e usarei apenas a janela do PowerShell. E antes de tudo, queremos ter certeza de que o instalamos. Se você disser apenas dotnet e, em seguida, hífen, informações sobre hífen, verá uma pequena impressão ou semelhante mostrando todos os tempos de execução do dotnet que você instalou. Eu tenho feito o desenvolvimento de dotnet nesta máquina em particular desde que a versão 3.1 estava em andamento. Você vê aqui que eu tenho cinco e também tenho sete. E se você olhar aqui embaixo, verá que eu também tenho acesso às versões de seis. Tudo bem, então isso é uma evidência de que o dotnet foi instalado com sucesso e você quer ter certeza de que tem sete, porque usaremos sete. No entanto, se você instalou e deseja usar seis, 90% do que podemos fazer pode funcionar com seis, onde há uma diferença. Eu vou me certificar de apontar isso. Agora que validamos que dotnet está instalado e temos acesso ao dotnet CLI. O que precisamos fazer agora é tornar isso um pouco maior para que os comandos fiquem mais visíveis. O que precisamos fazer é navegar até um diretório em que sabemos que queremos ter nosso projeto. Em seguida, criaremos nosso novo aplicativo dotnet. Vou apenas dizer CLS para limpar o prompt de comando. E então o maior novamente. Agora, o que podemos fazer é navegar até a pasta, que pareça algo como cd, e então você escolhe seu destino. Então, eu tenho uma pasta especial na minha unidade C que eu uso para projetos. Então, eu posso navegar até esse diretório. E então vou executar um comando que diz dots net new MVC. E então eu fui ver um hífen, ou esse hífen 0 significa onde eu quero colocar esse projeto? Então, eu queria criar uma nova pasta. Se eu não fizer isso onde quer que eu esteja, ele criará uma pasta. Portanto, você poderia ter criado uma pasta para si mesmo, usando sua interface de usuário ou sua linha de comando. E antes de entrar nisso, deixe-me mostrar como você criaria isso a seguir se eu dissesse diretório MK dir e depois desse um nome a ele, digamos, testaria o MVC. Então, isso criaria isso. Então eu poderia dizer cd para testar o aplicativo MVC. E você vê aqui que se trata de uma série de pastas. E então eu poderia simplesmente dizer dotnet, novo MVC. E então o que isso faria é criar um novo asp.net Core Web usando os modelos do controlador de visualização do modelo. Então é isso que MVC significa, caso isso não estivesse claro antes. E eles estão informando que ele foi criado com sucesso. Então, eles estão informando que criaram o projeto nesse caminho. E eles deram ao projeto o mesmo nome da pasta em que ele foi criado. Tudo bem, então essa é uma boa maneira limpa criar um novo MVC. No entanto, não vamos trabalhar no MVC up, então vou fazer cd dot dot, que me traz de volta a um diretório e me permite limpar minha tela mais uma vez de todas as mensagens. Basta ir para a tela cheia desta vez. E então vamos fazer isso de ponta a ponta. Então, se eu quiser um novo aplicativo dotnet MVC, digo dotnet new MVC, e então vou ver o hífen ou não zero, mas tudo, e então darei o nome do diretório. Agora, neste curso, vamos construir uma gestão escolar muito pequena. Apenas o suficiente para ajudar uma pequena escola a afastar os alunos, os professores, dos cursos que eles oferecem, certo? Então, vou dizer que a gestão escolar está boa, certo? Então vou dizer MVC, só para sabermos que este é um MVC, com certeza. E então, quando eu pressiono Enter, o que vou fazer é criar esse novo diretório, aplicativo School of Management dot MVC. E então, nesse novo diretor, cria o arquivo do projeto para acompanhá-lo. Tudo bem, então essa é outra maneira de fazermos isso. Poderíamos simplesmente dizer dotnet, novo hífen MVC e depois especificar o nome do projeto. Ele fará o diretório e o arquivo do projeto em uma única varredura. Agora, quando queremos abrir este projeto, temos um bom atalho de teclado que pode ser usado em vez de outro atalho de comando. Então, se eu navegar até esta pasta e eu disser gestão escolar do MVC, então CD, vá até lá. E então eu posso dizer pontos de código. Veja o que acontece. Isso ocorre se você estiver usando o código do Visual Studio. Então, depois de ter o Visual Studio Code, você tem essa variável de ambiente na sua linha de comando. E então, quando você disser código, ponto final, ele abrirá o Visual Studio Code no contexto da pasta para a qual você navegou atualmente no terminal. E, com certeza, estamos lá com o Visual Studio Code e aqui estão todos os arquivos que foram criados nesse diretório específico. Claro, ele pode navegar, eles estão usando seu Explorer, se você quiser. Mas, no momento, isso é prova suficiente de que nossos esforços de criação de projetos foram bem-sucedidos. Não vou passar por nenhuma extensão nem nada. Eu só queria mostrar como você criaria um novo MVC usando a CLI e o abriria totalmente usando o Visual Studio Code. Saiba que, antes de encerrarmos este exercício, eu só queria ressaltar que existem vários. 10. Crie o projeto ASP.NET Core MVC - Visual Studio: Tudo bem, então analisamos como podemos criar um novo projeto usando a CLI dotnet. E isso é realmente para qualquer tipo de sistema operacional, especialmente se o Visual Studio não for compatível com seu sistema operacional. No entanto, se você quiser usar Visual Studio para os exercícios de desenvolvimento, seguiremos as etapas simples para criar um projeto semelhante usando o Visual Studio. Visual Studio é um IDE muito poderoso fornecido pela Microsoft para o desenvolvimento de dotnet. E vem repleto de todos os tipos de recursos de que você precisa. Muitas extensões e muitos complementos com outras ferramentas para realmente realizar os mesmos feitos. Dito isso, outras ferramentas são capazes e os recursos a serem executados são prontos para uso. Nota à esquerda, você verá que eu tenho uma lista de projetos recentes. Se esta é a primeira vez que você usa o Visual Studio, talvez você não tenha muita vida desse lado. Isso é bom. No entanto, queremos nos concentrar na seção Introdução para que possamos começar clonando nosso repositório, abrindo um projeto ou solução existente ou uma pasta onde possa haver um projeto existente ou nós pode criar um novo projeto. Também podemos continuar sem código. Acho que escolhemos essa opção na última vez que analisamos o Visual Studio. No entanto, desta vez, vamos dizer Crie um novo projeto. E então isso carregará vários modelos de projeto. Portanto, com base nas cargas de trabalho que você selecionou para o Visual Studio, você pode ter mais ou menos cargas de trabalho do que eu tenho aqui. Tudo bem? A mais importante é aquela em que a criação, que é o MVC, sabe que essa é uma lista enorme que podemos filtrar com base nos idiomas. Portanto, queremos ver apenas modelos C-sharp. Talvez queiramos ver apenas modelos para nosso tipo específico de plataforma e para tipos de projetos específicos, certo? Ou podemos simplesmente pesquisar. Então, eu sei que quero o MVC, posso simplesmente pesquisar o MVC. E aqui eles vão me dar a API da web. Não, não é isso que eu quero. E então vejo aqui que eles estão me dando um aplicativo web com o controlador de visualização do modelo MVC. Então esse é o que vou selecionar, escolha Avançar. E então eles vão me perguntar, ok, qual deve ser o nome do projeto? Então, isso vai para um diretório padrão diferente dos meus anteriores. Então, vou dar o mesmo nome apenas para mostrar um nível de consistência. Tudo bem, então a gestão escolar não é MVC. E então eu posso clicar em Avançar. Em seguida, ele vai me perguntar o tipo de estrutura. Então, já analisamos o fato de termos diferentes tipos de estruturas ou podermos ter diferentes estruturas instaladas. E o que vamos fazer neste curso, vamos procurar, pode fazer isso a partir das sete, pode fazer isso onde há uma diferença. Eu definitivamente indicaria. Mas, para este curso, usaremos o dotnet seven e podemos escolher um tipo de autenticação padrão. Agora, essas são opções que poderíamos ter fornecido na CLI porque eu não forneci nenhuma opção na CLI. Eu não vou fazer nada extra aqui. Certo? E eu não vou fazer nenhuma dessas coisas. O que vou fazer é clicar em Criar. Depois de clicar em Criar, você abre nosso Visual Studio com nossos projetos. Portanto, temos o Solution Explorer por padrão, esse painel está, na verdade, no lado direito. Mas acho mais fácil de usar quando está no lado esquerdo. Assim, você pode realmente arrastar esses painéis e colocá-los onde quiser. É claro que a esquerda ou a direita geralmente são um bom lugar para ter algo assim, que mostra todos os arquivos, mas eu gosto de tê-lo à esquerda. Tudo bem? Você também tem acesso às ferramentas de gerenciamento de banco de dados integradas. Então, com o Visual Studio, você nem precisa do Data Studio porque você pode realmente se conectar ao seu banco de dados a partir daqui. E dinheiro, até certo ponto, executando consultas, criando novas tabelas e como objetos de banco de dados, conforme necessário. Tudo bem, então o Visual Studio é muito poderoso e quando você quiser executar, você pode pressionar F5 no teclado ou pressionar o botão Executar na parte superior, que tem as letras HTTPS. Mas se você estiver usando dotnet six, as letras podem não ver HTTPS. Eles podem ter apenas o nome do projeto, onde você vê HTTPS aqui, ou seja, gestão escolar ponto MVC, e tudo bem. Os dois farão a mesma coisa. É só uma questão de como eles são classificados ou chamados nessas configurações de inicialização, aquele arquivo JSON, onde ele descreve os diferentes perfis. Portanto, você terá um perfil HTTP que será executado em uma configuração HTTP. Em seguida, ele também sai da caixa com HTTPS, que será executado com as configurações de HTTPS. Tudo bem? Você também pode receber uma solicitação para confiar no certificado, nos certificados de desenvolvimento. Se você receber essa solicitação, clique em Sim. E eu vou correr e ver como isso ficaria. Então, o que ele faz é construir o projeto, seja, ele vai compilar, examinar todo o código e garantir que tudo esteja bem. E então, se tudo estiver bem, vai lançá-lo aqui. O terminal, ou eu também tenho um terminal em execução no Visual Studio. E está me mostrando que agora está ouvindo na porta HTTPS sports 7212 e HTTP 5294. Em segundo plano. Ele também lançou meu navegador padrão e teria como padrão a porta HTTPS. E aqui está nosso aplicativo web sendo executado de dentro do Visual Studio. Então, mais uma vez, o Visual Studio é muito poderoso e nos permite realizar várias coisas clicando aqui e ali. Eles nos fornecem muitas ferramentas e é muito fácil navegar e começar a trabalhar. No entanto, mais uma vez, nem todo computador, nem todo sistema operacional oferece suporte ao Visual Studio. Então, vamos nos concentrar no desenvolvimento usando o Visual Studio Code e a CLI dotnet. No entanto, farei o meu melhor para executar os paralelos em que talvez você precise saber como fazer a mesma coisa usando o Visual Studio. 11. Código do Visual Studio: Bem vindos de volta, pessoal. Nesta lição, vamos visitar o Visual Studio Code por um tempo, certo? É um editor muito versátil e é bom saber onde estão as coisas e entender algumas das instruções que podemos ver à medida que avançamos. Então, eu tenho aberto nosso projeto MVC dot MVC do aplicativo School of Management que criamos antes. E se você quiser abrir nosso projeto, digamos que o Visual Studio Code feche e você queira voltar lá. Você tem a opção de usar a CLI e navegar até lá. Ou você pode realmente ir para Arquivo e dizer Abrir pasta. E, a partir daqui, você pode navegar até a pasta e selecionar a pasta. E então você teria a mesma experiência com a codificação do Visual Studio, nós apenas carregaremos todos os arquivos que estão atualmente na pasta nesta seção chamada Explorer. Você pode acoplar esse Explorer para obter mais espaço para seu código. Ou você pode tê-lo na lateral, ele pode redimensioná-lo à vontade. Escreva às vezes que você simplesmente não quer que seja tão aberto. Tudo bem? Você também tem a capacidade de pesquisar tudo. Então, se eu pesquisar o MVC mais recente, ele vai me mostrar todos os lugares que aparecem que eu posso fazer uma pesquisa e substituir com bastante facilidade. Substituir tudo é substituir um de cada vez. Obviamente, eu sugeriria uma de cada vez para operações em massa, nas quais você pode ter alguns conflitos com o que está procurando, certo? Portanto, você sempre deve ter cuidado com essa busca e substituição, especialmente para operações em massa. Então, temos acesso ao controle da fonte. Agora, aqui você pode ver uma opção que sugere que você instale o Git no seu sistema operacional. Agora estou no Windows. Então, se eu ainda não tivesse o Git instalado, você veria instalar o Git para Windows. Porque o que acontece é que Visual Studio Code tem uma integração direta com o Git. E permite que você execute tudo isso, obtenha comandos daqui com bastante conforto, sem precisar entrar na CLI. Tudo bem, então conhecer os comandos do Git é legal. Mas com o Visual Studio Code, você pode ser causado por sem ter um conhecimento íntimo deles. Então você quer ir em frente e entrar no seu sistema operacional. Nós usaremos o GitHub. Então você vê aqui que há um grande botão vermelho que diz que publiquei um GitHub porque com apenas alguns cliques, podemos realmente enviar nosso projeto para o GitHub e faremos isso mais tarde. Portanto, não precisamos nos preocupar com isso. Depois, há execução e depuração. Executar e depurar realmente nos permite executar nosso projeto. Tudo bem, então, com nosso experimento do Visual Studio, você viu que poderíamos clicar no botão e ele lançou nosso projeto. Bem, isso é o que a Runner Depot oferece aqui. Veremos como isso funciona versus como também podemos fazer isso na CLI. Não queria pular o Explorer remoto. E eu estou ignorando isso porque você provavelmente não tem isso. Este Explorer remoto é um dos meus plug-ins adicionais. E qualquer coisa que você esteja vendo na lateral do meu computador que não esteja vendo para decidir sobre o seu computador significa que essas são extensões adicionais que eu instalei para meus próprios propósitos. Não vou priorizar nada que não seja absolutamente necessário para você concluir este curso. Portanto, o próximo ícone importante ao qual você gostaria de prestar atenção seriam as extensões. Agora, em Extensões, você verá que tem acesso para instalar extensões diferentes para oferecer suporte a diferentes tipos de projetos com base em suas necessidades. Então, eu trabalho com o Azure. Eu tenho algumas como suas extensões instaladas, certo? Mas também tenho trechos Bootstrap five para facilitar minha vida. Eu também tenho um trecho em C nítido. E você deve ter visto algumas sugestões sobre a necessidade de uma extensão C-sharp e C-sharp com base no tipo de projeto. Então, porque vamos fazer um projeto C-sharp no dotnet. A extensão C-sharp faz muito sentido porque adiciona suporte para sintaxe de sentido porque adiciona suporte para codificação C-sharp e IntelliSense, preenchimento automático e várias coisas. Então, eu sugiro que você aguarde a extensão C-sharp. Não. Para instalar uma extensão, o que você faz é pesquisar no mercado de extensões aqui, e você pode simplesmente escrever C sharp. E então essa estará no topo da lista porque é uma extensão oficial da Microsoft. Você pode clicar nele. Então, quando você vê todos esses botões para mim, você realmente vê um botão de instalação de extensão. Como se eu clicasse em um, não tenho o botão de desinstalação que você veria. Portanto, você pode prosseguir e instalá-lo , e talvez seja necessário reiniciar o Visual Studio Code. Existem várias extensões úteis e você sempre deve consultar editor da extensão. E uma coisa que eu também uso para avaliá-lo é quantos downloads ele tem. O editor é um, mas o número de downloads, caso você não esteja necessariamente familiarizado com o editor. O número de downloads também varia. Um indicador muito bom de sua estabilidade e de quão bem usado é. Agora, outra coisa que você pode notar, e acho que mencionei antes, é que código do Visual Studio pode mostrar um pequeno pop-up sugerindo que você obtenha extensões específicas. Você está instalando determinadas extensões com base em um tipo de projeto? Você pode realmente prosseguir com eles. Visual Studio Code está apenas fazendo sugestões para ajudar você a ter a melhor experiência possível com base no que você está trabalhando. Instalou várias extensões. Você pode ver aqui que eu tenho 45 extensões. Então, basta usar o Visual Studio Codes e a versatilidade, porque eu os usei para o desenvolvimento de modelos ARM. Eu o usei para desenvolvimento angular, usei para desenvolvimento em Azure. Eu o usei para algumas coisas de pasta de trabalho de dados que ainda são Azure, certo? Larval, PHP, Python. Essas são todas as coisas que eu o usei para fazer, e essas são coisas para as quais você pode usá-lo no futuro medida que se desenvolve e deseja explorar caminhos diferentes. Portanto, o Visual Studio Code é quase como um IDE tudo-em-um para várias plataformas. Esta é a primeira vez que você usa o Visual Studio Code. Eu encorajo você a explorar e ver como ele suporta outras linguagens e outras estruturas e como você pode usá-lo a seu favor. Agora, outra coisa que eu quero, vamos passar das extensões. Outra coisa que eu só queria ressaltar antes de entrarmos em qualquer desenvolvimento real seria o fato de ele ter um terminal embutido. Então, antes de saber tudo o que fizemos para criar o projeto e assim por diante. Fizemos isso no terminal nativo do nosso sistema operacional. No entanto, enquanto estamos no Visual Studio Code, provavelmente não queremos entrar e sair e entre janelas. Convenientemente, incluiu um terminal para nós. Assim, você pode chegar lá usando o atalho de teclado que está aqui. Ou você pode simplesmente clicar nele e sair do curso e isso abrirá uma janela de terminal. E essa janela do terminal é baseada na Porsche. Mas adivinhe? Temos opções. Portanto, podemos realmente ter vários terminais funcionando simultaneamente. Então, eu poderia realmente adicionar outra janela de terminal. E se eu quisesse um, fosse apenas um prompt de comando. Se eu quisesse um que fosse um bash, você receberá o Git Bash assim que instalarmos o Git em sua máquina. E eu mencionei isso antes, mas eu não te mostrei. Então você pode ficar bom. Portanto, você pode acessar o hífen scm.com ou simplesmente obter o Google. E tenho certeza de que o primeiro resultado da pesquisa forneceria esse site. Você também pode baixá-lo para vários sistemas operacionais, plataformas. Assim, você pode obter o Windows, o Mach e obtê-lo para suas distribuições Linux. E é uma interface de linha de comando nativa, certo? Mas você tem certas ferramentas que podem fornecer uma interface de usuário e o Visual Studio Code , mais uma vez, é uma ferramenta que permitirá que você obtenha comandos relacionados aqui. Tudo bem? Então, essas são coisas que podemos saber se eu quiser que ele execute nosso aplicativo aqui usando a CLI. Eu posso entrar no terminal e deixar eu fechar o Windows, Terminal Windows que eu não estou usando, aquela pequena lixeira. Você pode simplesmente clicar nele para fechar a janela. E vou acessar as Propriedades para ver o arquivo de configurações do gramado. Tudo bem, então eu vou te dar uma olhada no arquivo para que você possa entender tudo o que está acontecendo. Mas antes disso, eu só queria me concentrar nesse arquivo de configurações de linha. Agora, temos dois perfis de HTTP e HTTPS. Se quisermos que ele execute nosso aplicativo, o padrão seria HDTP. Se eu disser dotnet run, na verdade usaria como padrão o perfil HTTP e a versão Lunch ou HTTP do nosso aplicativo, entre aspas. É a mesma versão, o mesmo código, apenas um comportamento diferente em termos de segurança. Mas então, se quiséssemos executar usando a configuração HTTP s, teríamos que especificar em nosso dotnet run. Então, vou silenciar essa janela do terminal um pouco maior. E você pode fazer isso mantendo pressionada a tecla Control e pressionando Plus para aumentar o tamanho geral do seu Visual Studio. Código, interface de usuário e controle menos para reduzi-lo, certo? Assim, você pode brincar com isso e ajustá-lo para um tamanho apropriado para sua tela. E então o que mais é dotnet run? E então eles podem ver o hífen, o lançamento do hífen, o perfil do hífen e, em seguida, especificar que eu quero usar o perfil de lançamento HTTPS. Ou quando eu pressiono Enter, ele vai construir. E ele verá a saída do terminal que nosso aplicativo está ouvindo agora em nossa porta HTTP e HTTP, certo? Eu não fiz isso. Parte dela ainda funcionaria, mas estaria apenas ouvindo na porta HTTP de 5246. Tudo bem, então essas são apenas algumas pepitas. Portanto, se controlarmos o clique nesse URL, ele iniciará nosso navegador. E então podemos ver aqui que esse é nosso aplicativo MVC executado de dentro do Visual Studio Code. Tudo bem, e quando eu terminar de fazer o que estou fazendo, posso simplesmente usar o Controle C para desligar. Então, quando eu terminar testar e quiser voltar ao código, quero parar o servidor que está sendo executado. Eu posso simplesmente controlar C e , em seguida, ele o desligará e me retornará à interface CLI. Tudo bem, então esse é um bom tour rápido e sujo do Visual Studio Code e o que ele pode fazer por você. Há outras pequenas pepitas que descobriremos ao longo do caminho. Não quero sobrecarregar suas informações. Eu só queria destacar algumas das coisas mais essenciais para nossas tarefas de desenvolvimento. E à medida que avançarmos, veremos mais. Não há um recurso interessante. Não é absolutamente necessário, mas é um que eu uso. E isso provavelmente influenciará a experiência que você teve com base em como eu faço minhas coisas. Mas eu uso o salvamento automático. Se você for ao Arquivo, você também o fará. Se você rolar para baixo, verá o salvamento automático, então você verá que está marcado para mim. Isso significa que, enquanto eu digito, código do Visual Studio salva automaticamente minhas alterações. E se você habilitá-lo, você terá uma experiência semelhante. Caso contrário, é claro, depois de fazer alterações em nosso arquivo, você precisará salvá-lo ou eu crio sempre para ver o reflexo no ambiente de teste? Portanto, o salvamento automático pode economizar muito tempo. Quando se trata disso. Também podemos alterar nossas configurações. Se você quiser usar um tema de cor diferente, você pode mudar seu tema para o quê, claro ou escuro. Então, eu não vou mudar do escuro, mas você pode escolher o que você gosta. Você também pode ativar itens como Word ou superior e alterar o tamanho da fonte nas configurações. Você pode alterar o tipo de fonte que está usando. Você pode alterar o tamanho da fonte. Então o meu é 30. Alugue agora. Se você quiser falar ou falar. Você pode procurá-lo aqui e alterá-lo, o que eles querem que ele ligue ou desative. Eu o tenho ligado. Agora, quando voltarmos, faremos um tour pelos arquivos do nosso projeto. 12. Tour de arquivos e pastas: Tudo bem, pessoal, agora vamos dar uma olhada nos arquivos do nosso projeto. Então esse é o nível das configurações abertas. Deixe-me fechar isso e começar do zero. Também vou ampliar um pouco e fechar o terminal para que tenhamos mais imóveis. Saber. A pasta bin. Isso é gerado depois que você cria um projeto e, basicamente, armazena os ativos que fazem seu aplicativo funcionar, certo? Então, basicamente, quando você pressiona F5 no Visual Studio ou usa o comando.net dotnet run. O que acontece é que, quando diz que está sendo construído, está compilando todos esses arquivos e ativos e os colocando nessa pasta bin. E então ele executará o aplicativo a partir dessa pasta bin. E então essa é a manifestação de que você veria um interativo durante o teste. Por outro lado, quando você está publicando, ele também criaria um conjunto de ativos semelhante a esse, e é isso que você colocaria na máquina de destino ao implantar seu aplicativo. Tudo bem? Não, o dotnet Core é multiplataforma, portanto, esses ativos funcionarão em qualquer sistema operacional, em praticamente qualquer tipo de servidor em que precisem ser hospedados. Tudo bem, isso é o que obtemos da pasta bin. Agora, temos uma das principais pastas que retiramos da caixa antes mesmo de fazermos uma compilação. E isso é chamado de controladores. Agora temos na pasta controladores, os controladores. E lembre-se de que os controladores existem para controlar o fluxo do seu aplicativo, o que significa que cada solicitação recebida passa por um controlador. E então ele é tratado e você recebe um erro porque não consegue lidar com isso corretamente, ou você realmente acessa a página que está tentando acessar. Então, toda vez que você navega em nosso site, você envia uma solicitação com cada clique, envia uma solicitação quando vai ao destino ou obtém os resultados esperados recebe uma resposta. Espero que você receba a resposta que espera ou receba uma resposta de erro. Então, um controlador está entre essa transação de resposta à solicitação, certo? Então, por exemplo, quando executamos nosso site e ele carregou a página inicial, o que aconteceu é que ele foi para o controlador doméstico e, por padrão, foi para a ação de índice e, em seguida, para o índice ações é retornar uma visualização. O controlador tem um registro de todas as possíveis raízes das solicitações que ele pode atender com êxito. Uma dessas solicitações que podem ser atendidas é o índice. Em geral, o desenvolvimento web, o índice deve ser sempre sua primeira praia. Mais servidores tentarão acessar o índice dot HTML ou ponto PHP ou não SPX, certo? Não importa qual seja o tipo de arquivo e o tipo de extensão, ele está sempre procurando por um índice. Primeiro. controlador doméstico tem o que chamamos de ação, que é uma rota registrada que o controlador doméstico sabe que pode seguir. Se você for para casa, procurará automaticamente o índice. E então, quando ele procura um índice, esse método define o que deve acontecer quando o índice está tentando navegado com base em qual acorde e qual mágica queremos que aconteça. Talvez queiramos buscar dados do banco de dados. Talvez queiramos fazer cálculos. Fazemos tudo isso dentro desse método. Faça coisas. Tudo bem? E lemos todo o nosso código, magia e lógica aqui. E então retornamos o que chamamos de vista. Tudo bem, logo chegaremos à pasta de visualizações, mas você verá que temos uma pasta de visualizações. Este é o C no controle no MVC, o controlador de mares. Então é isso que um controlador faz. Ele aceita a solicitação que diz que não pode atender à solicitação. Você quer que ele vá para o índice? Sim, eu tenho uma ação de índice. Eu posso atender à solicitação. Aqui está o que eu preciso fazer antes de atender sua solicitação ou antes de mostrar um resultado. Em seguida, a linha final é onde eu retorno a página que você solicitou junto com quaisquer dados adicionais que precisem estar lá. Como esse é um código padronizado, você pode ver que é muito simples. Só vai retornar o pH. Não está fazendo nada sofisticado antes de virar a página. Portanto, a vista é o destino final e essa geralmente será a última linha sua ação quando você estiver criando a sua própria. Outro destino que o controlador doméstico conhece é a privacidade. Então, para cada destino que você deseja, você precisa ter uma ação. E essa ação retornará uma visualização ou retornará alguma resposta favorável ao que o usuário está esperando. Eles também têm outro mito geral, ação chamada erro, que está retornando um modelo de visualização de erros. Então, a página de erro. Agora, se você olhar aqui, verá que este está fazendo mais. Um deles tem algumas anotações que lidam com o cache. Não precisamos nos preocupar com isso, certo? Não. Mas dentro do método, você vê que ele está fazendo um pouco mais. Diz visualização de retorno e, em seguida, está vendo visualização de retorno com esses dados. Então, essencialmente, isso é como uma página de erro global. Sempre que houver um erro, pelo menos durante a depuração , ele acompanhará quais são os raios desse erro, quais são as atividades e permitirá que você o rastreie no futuro em seu aplicativo. Então, isso é algum tipo de coisa mais avançada que eu não vou abordar. Mas o que eu realmente queria ressaltar aqui é que ela está adicionando as informações de que a visualização precisa. Então, é assim que passamos as informações para a exibição. A vista inicial não precisa de inflamação. Então, não precisávamos fazer nada. Certo. Eu não precisaria causar nenhuma inflamação. O controlador de privacidade também não precisou de nenhuma informação adicional. No entanto, quando a página de erro deve aparecer, queremos passar essas informações adicionais do código por trás quando retornarmos a visualização. Então, isso é essencialmente o que isso faz. Tudo bem? Não, não estou disposto a pedir o MVC. Estou seguindo a ordem da estrutura de pastas aqui. Então, os próximos seriam os modelos. E um modelo de visualização de erros de modelo é o único modelo que obtivemos em nossa foto. Agora, o modelo Error View contém essas duas propriedades e, basicamente , nossos modelos de visualização de barra, nossos arquivos de classe que representam os diferentes bits de dados que queremos exibir para nosso usuário, certo? Assim, um modelo incorporará cadeias de caracteres em diferentes tipos de dados, em spool, char, etc. Tudo o que você precisa exibir em sua página, que precisa ser dinâmico. Praticamente, você criará um arquivo de classe, que basicamente desempenhará o papel do nosso modelo. É só a aula. Nada muito especial se 0 p, Bem, você não quer classes e sabe quais são as propriedades. E, essencialmente, o que fazemos com o controlador é definir os dados. Então é isso que estamos fazendo aqui. Na verdade, estamos colocando os dados dentro desse modelo de visualização de erros ou estamos criando um objeto dessa classe. E depois de criarmos um objeto, despreenchemos as propriedades com os diferentes bits de dados que serão um. Então, aqui preenchemos o ID da solicitação com todas essas informações. Ou ele enviará isso de acordo com o ID ou enviará o identificador de rastreamento. Se for isso, saiba o que vai preenchê-lo com tudo isso, então ele retornará um objeto disso. Portanto, a visualização agora tem um modelo que tem alguns dados. E a visualização já saberá como extrair os dados do objeto e exibir os do usuário. Tudo bem. Então, isso é o que um modelo realmente representa, é apenas um objeto de uma classe que armazena dados que a visualização vai usar. O controlador é responsável por preencher esse objeto com os dados antes que a exibição os exiba. Obj, essa é uma daquelas pastas ou arbitrárias não precisamos necessariamente prestar muita atenção. Mais uma vez, ele tem apenas um monte de arquivos gerados com os quais não interagimos ou com os quais interagimos demais. Então, vou pular isso. Analisamos as propriedades e analisamos as configurações de inicialização desse arquivo JSON. Então aqui, como o nome do arquivo sugere, ele só tem configurações diferentes para o todo, o aplicativo deve ser iniciado, certo? Portanto, temos as configurações do iOS. Se quiséssemos executar com uma instância local do IIS Express, seria executado nessa porta. Mas Vizio, sorry.net tem seu próprio servidor embutido. Portanto, não precisamos necessariamente confiar no expresso, como precisávamos no passado. Portanto, isso nos permite ter nossos próprios perfis de lançamento em HTTP e HTTPS. E isso nos permite inserir o que chamaremos de variáveis de ambiente às diferentes configurações de inicialização, conforme necessário. Tudo bem? Então, essas são basicamente as configurações que saem da caixa. E você não precisa necessariamente modificar esse arquivo, a menos que saiba absolutamente o que está fazendo e tenha necessidades muito específicas por trás de suas modificações. Mas, de um modo geral, você pode deixar esse arquivo sozinho. Agora, vamos passar para as visualizações e a pasta de visualizações. Isso pode ser muito interessante. Em primeiro lugar, você notará que temos dois. Temos uma pasta lá chamada lar. Agora, tenho o controlador doméstico aberto simultaneamente para que eu possa mostrar a expectativa do sistema de arquivos e como tudo se encaixa. Depois de seguirmos essa convenção de nomenclatura, temos o controlador doméstico. Portanto, temos uma pasta de visualizações chamada home. Então, o que você notará é que, para sempre , o controlador que você cria, o mecanismo MVC procurará automaticamente dentro do controlador de visualizações uma pasta com o mesmo nome do controlador. Eu quero dizer o mesmo nome. Quero dizer, o que vem antes da palavra controlador. Mas isso é um padrão de nomenclatura. Então, se adicionarmos o controlador de estudantes. Então seriam estudantes. Esse é o nome do controlador. A palavra controladores esperados. Tudo bem, então você deve sempre ter a palavra controlador, mas o que vem antes disso é o nome. Ele espera ver uma pasta com o mesmo nome em vez da pasta de visualizações. E então, dentro dessa pasta, ele espera ver diferentes arquivos CSS HTML. Então CSS HTML é a extensão dada aos arquivos de visualização rápida, certo? E antes de falar sobre a aparência de um desses arquivos, gostaria de salientar que cada nome de arquivo precisa corresponder a um nome de ação. É por isso que, quando retornamos, a visão sabe o que devolver. Tudo bem, então deixe-me passar por isso de novo. Quando você envia uma solicitação, ao clicar em um link, à direita, você está clicando em um link que deve navegar até nosso controlador. O controlador avaliará o link e verificará se ele tem uma ação que corresponde à URL que você está tentando acessar. Se tiver uma opção, ele então executará essa ação, executará qualquer mágica que esteja nessa ação e, em seguida, tentará retornar uma visão. Essa visualização que ele tenta retornar será o arquivo HTML CSS que ele especificou com o mesmo nome dessa ação. Portanto, se você enviar uma solicitação e houver nenhuma ação que corresponda a essa solicitação , você receberá um erro 404. Se você enviar um leilão e solicitar, desculpe, e ele encontrará uma opção que corresponda à solicitação. E então ele tenta retornar a visualização e não consegue encontrar o arquivo correspondente, então você receberá uma solicitação de fluoróforo e isso basicamente fará com que todos os sites funcionem. Então, essa é essencialmente a experiência que você pode esperar quando está navegando na hora de criar seu site. E depois de seguir essa convenção de nomenclatura, você não terá nenhum problema. Então você verá aqui que indexei o HTML em Celsius. Eu tenho o índice como uma ação de privacidade, privacidade. Pode haver exceções à regra porque há um erro, mas você não vê um erro dentro dessa pasta. Na verdade, o erro está na pasta compartilhada. Isso é bom. Mas, de um modo geral, você quer seguir o padrão por trás do índice e da privacidade à medida que avança. Agora, vamos dar uma olhada no que está no arquivo de índice. No arquivo de índice, temos praticamente uma mistura de HTML e C-sharp. Tudo bem, então isso é HTML. Este é um código com aparência de C nítido. Portanto, o arquivo HTML CSS é como um arquivo híbrido que nos permite escrever uma certa quantidade de C-sharp dentro desse arquivo HTML. Mas, na verdade, é apenas um arquivo HTML glorificado. Se precisarmos que algo seja dinâmico podemos introduzir o C-sharp. E para apresentar o C-sharp, precisamos apenas de um cartaz publicitário. E então podemos começar a digitar alguma coisa, certo? Esse é o código C Sharp. Então, vamos ver, vou primeiro executar isso. Vou usar meu atalho de teclado Control Shift, apóstrofo lançou o terminal, vou dizer dotnet execute e deixe que isso inicie nosso aplicativo. Então, aqui está nosso aplicativo, certo? E observe que foi, não especificou para onde queria ir, mas apenas nos direcionou para a página de índice do controlador doméstico, certo? Se eu clicar em privacidade , veja isso. Vai dizer que o home reduz a privacidade. Então, quem é o controlador? privacidade foi a ação. Se eu tentar acessar, vamos tentar, vamos tentar indexar, então ele voltará para a página inicial. Portanto, ele conhece o índice de barra inicial. Mas se eu tentar ir para casa e cortar meu nome , isso me dará um 404 porque não há nenhuma ação que possa ser encontrada para essa rota. Tudo bem. Agora, o que eu quero fazer é mostrar como podemos injetar algo dinâmico nessa visão. Então, se eu quisesse, digamos que o valor da data. Então, posso dizer na hora da escritura. Não. Veja isso, UTC sabe, tudo bem, e guarde isso. E eu vou fazer o Controle C dentro do terminal para matá-lo. Em seguida, basta pressionar para obter o comando de execução mais recente e pressionar Enter novamente para que ele reinicie. E então eu volto para o site ou apenas atualizo e vejo isso. Acabei de adicionar isso, certo? Esse é um carimbo de data e hora baseado no código que acabei de inserir, que é código C-Sharp, data e hora, UTC conhecidos. Tudo bem, então isso é, sim, é um arquivo HTML, mas eu posso colocar meu código C-Sharp. Então, se eu quisesse que isso fosse, digamos que em uma tag H1, eu poderia realmente criar um HTML. Cada uma das etiquetas. Dedique esse tempo. E desta vez eu vou terminar o Controle C. E vou usar um comando diferente desta vez. Em vez de dotnet run, vou dizer dotnet watch. Tudo bem. Então assista isso agora. E eu disse “Dotnet Watch”. Isso vai me dizer que ele fará o que eles chamam de hot reload. Hot Reload está ativado. Deixe-me rolar para cima para que possamos ver exatamente o que está dizendo. Aqui. Está no dotnet watch Hot Reload ativado. E então podemos ver uma lista de outras opções. Em seguida, eles dizem usar o Control R para reiniciar. Dessa forma, quando fazemos nossas mudanças, não precisamos parar e começar, parar e correr, pular e correr, pular e correr. O Watch resolverá isso um pouco mais facilmente para nós. Então, quando eu volto para o meu navegador, aqui está a data e hora conhecida como tag H1, certo? Então, se eu quiser mais desses, posso simplesmente usar o Controle C, V. E observe que eu não destaquei, quando eu controlei o CV, eu apenas cliquei na linha, controle C, controle V. posso simplesmente usar o Controle C, V. E observe que eu não destaquei, quando eu controlei o CV, eu apenas cliquei na linha, controle C, controle V. duplique a linha. E a cada alteração, ele me informa que o arquivo foi alterado e ele é recarregado rapidamente. E então, quando eu volto para o navegador sem parar e começar, aqui está um fruto do trabalho. Tudo bem, então estou apenas mostrando que o arquivo de visualização é, na verdade apenas um arquivo HTML glorificado que nos permite injetar algum código C-Sharp quando necessário. E é por isso que, quando carregamos um objeto com dados, podemos realmente interagir com os dados provenientes do nosso objeto C sharp aqui mesmo em nosso arquivo de visualização. A visualização do índice é bem simples. Deixe-me remover tudo isso. Temos a visão da privacidade, que não é mais espetacular do que isso. Exceto que aqui você verá que eles estão fazendo essa injeção de C-sharp porque você pode definir o título dinamicamente da página em que está e, em seguida, eles estão apenas imprimindo essa página dinâmica aqui. Tudo bem. Agora, quando vou para a pasta compartilhada, temos o arquivo de layout ou o arquivo de layout. Diminua um pouco o zoom. O arquivo de layout é basicamente o modelo que todo o site usará para inferir como deve ser. Se você notar, quando eu vou entre casa e privacidade, tudo é estático, exceto o que está entre o cabeçalho e o rodapé. Tudo bem, tudo parece consistente e a consistência é muito importante. Ao criar sites com sites estáticos, você precisaria copiar e colar manualmente a barra de navegação , o rodapé e todos os ativos em cada página. Se você quiser uma consistência, a página de layout fornece um modelo HTML. Você notará que as visualizações não começam com as tags HTML e tudo mais. E em cada WEBO eles sempre começam com seu esqueleto. No entanto, temos o esqueleto em um só lugar, temos as tags HTML DOCTYPE. Temos a cabeça e o corpo em um só arquivo. Tudo bem, então não precisamos repetir isso para cada página de visualização que criamos. No entanto, dentro do corpo e temos a navegação, deixe-me meio que recolher as partes, certo? Temos o nav e depois começamos com o contêiner, que geralmente é onde você começa a colocar seu conteúdo. Então temos isso, e então temos essa seção chamada corpo de renderização. Portanto, o corpo de renderização é onde a visualização é injetada. É por isso que, quando mudamos as páginas, todo o resto é estático exceto o que está dentro do corpo. Tudo bem? Esta é a seção de contêineres, privacidade. Essa é a nossa seção de contêiner que rende o corpo porque está apenas nos mostrando o arquivo de visualização ou o conteúdo do arquivo de visualização que está sendo carregado com base na rota. No entanto, todo o resto é consistente. Então, agora, se eu fizer pequenos ajustes, como renomear esta seção, seguir todos os passos, alimentos e colocar espaços entre os meios. E eu fiz isso no título, na barra de navegação e no rodapé. Se dermos uma olhada aqui , veremos que tudo mudou, certo? E não importa em qual página visitemos, mais uma vez, ela sempre será consistente. Não. Acho que temos uma boa compreensão de nossas opiniões e temos outros arquivos que desempenham um papel coadjuvante que abordaremos mais tarde. Temos a pasta raiz dub, dub, dub, dub, que tem nossos ativos. Então, nós viemos com esse CSS. Este é o nosso próprio arquivo CSS incorporado para que possamos estender e escrever nosso próprio CSS, mas temos o CSS do site no qual podemos escrever nosso próprio site, apenas no qual podemos escrever nossos próprios arquivos JavaScript. E então temos a pasta lib que tem bibliotecas de terceiros. Então, de um modo geral, quando você instala bibliotecas de terceiros, como se saíssem da caixa com o Bootstrap e o jQuery terminam. Essas bibliotecas, então você vai querer colocá-las em um piscar de olhos. Por padrão, eles também são referenciados em nosso arquivo de layout. Aqui. Aqui você verá todos os arquivos de script que estão sendo referenciados, certo? Você também verá no cabeçalho, todos os arquivos CSS sendo referenciados como a chave. E com eles, temos o Bootstrap, decidimos o CSS e, em seguida, temos um arquivo CSS especial projetado especificamente para layouts. E você o verá aqui chamado layout.css ational, ou seja, CSS, podemos escrever ainda mais CSS específico para a página de layout sem que ela seja global. Tudo bem, a seguir, temos alguns outros arquivos integrados e as configurações do aplicativo desse arquivo JSON. Portanto, as coisas opostas, como o arquivo JSON, têm duas partes para que possamos criar outros ambientes, versões específicas. Portanto, para o desenvolvimento, se tivermos configurações específicas que queremos usar, podemos defini-las lá em vez de quando publicamos versus quando estamos testando, etc., no ambiente Basin. Podemos ter outros diferentes. Vamos modificar isso à medida que avançarmos. Portanto, saiba que é um arquivo de chave e você deve ter muito cuidado com as modificações feitas aqui, pois se a modificação for incorreta, seu aplicativo não será executado. Em seguida, temos nosso program.cs, que está em qualquer aplicativo C-Sharp. O Program.cs é o primeiro arquivo executado. Depois que o aplicativo for executado, ele procurará por program.cs. Portanto, o que está nesse arquivo define o tom de como seu aplicativo funcionará. E quando vemos que isso define o tom, o que estamos fazendo antes de tudo é adicionar serviços ao contêiner. O contêiner será parecido com o que o aplicativo usará para saber o que ele pode ou não fazer. Deseja adicionar quantos serviços precisarmos para esse contêiner antes que o aplicativo seja criado. Então, aqui estamos vendo o suporte de IDE para controladores com visualizações: estamos fazendo um MVC absolutamente precisa de controladores e visualizações, certo? Em seguida, criamos o aplicativo. E então há algumas verificações para dizer, ok, se estamos em um ambiente que é de desenvolvimento, ou se não estamos no desenvolvimento de aplicativos, podemos reescrever essa página, quatro setas e podemos forçar Redirecionamento de HTTPS, certo? Então, basicamente, isso dirá que você não pode usar nada além de HTTPS, segurança de transporte rigoroso. Mas isso geralmente é para produção. É por isso que está nessa declaração if. Se não estivermos em desenvolvimento , seja rigoroso quanto ao cabeçalho de transporte https, certo? Nós usamos HTTPS, o redirecionamento. Então você verá aqui que há um aviso que surge sempre que não estamos usando a configuração HTTPS, seja, o middleware de redirecionamento está durante nosso aviso, que será esse. Então, isso é o que chamaremos de middleware. Então, esses são miniaplicativos que adicionamos ao pipeline de solicitações. Ou seja, quando eu solicito, quando alguém clica em um URL, vai dizer, ok, qual é a ordem que devo fazer? Eu deveria primeiro ler Erich para ler Erich em HTTPS, devo usar arquivos estáticos, ou seja, esses ativos desde a raiz. Eu deveria usar o roteamento. Eu deveria tentar autorizar e depois tentar mapear. Então eu deveria correr, certo? Então, basicamente, é como a ordem em que todas as funções são chamadas com cada solicitação, podemos adicionar nosso próprio middleware. Podemos mudar a ordem, mas a ordem importa. Portanto, certifique-se de que, ao adicionar middlewares a esse arquivo, você o esteja adicionando em uma ordem específica com base em como deseja que seu aplicativo funcione. Isso é tudo para a turnê, certo? Muitas informações foram compartilhadas. Então, você quer mais uma vez brincar, você sabe, como criar projetos adicionais. Se você quiser criar um projeto adicional e tentar bagunçar os arquivos e ver o que para de funcionar e assim por diante. Essa é uma boa maneira de aprender como se orientar. Eu sugeriria que você tenha vários projetos com essa largura. Mas, por enquanto, temos todos os arquivos do projeto que são absolutamente necessários para nossa compreensão nesta fase. Em nossa próxima lição, vamos levar nosso projeto para o GitHub. 13. Adicionar projeto ao GitHub: Tudo bem, pessoal, então nos avise, impulsionem nosso projeto para começar. Então, usaremos o projeto que criamos para criar um novo repositório em nossa conta do GitHub. E isso também estabelecerá um link entre nossa instância do Visual Studio Code e a instância do GitHub. E isso nos permitiria empurrar e puxar conforme necessário. Vá até a guia Controle de código-fonte. E você tem duas opções para inicializar um repositório e publicá-las no GitHub. Então, o que acontece é que, depois instalar o Git em sua máquina, tenha acesso a um sistema de gerenciamento de controle de fonte local. Por isso, também é chamado de sistema distribuído de gerenciamento de controle de fonte. Em sua própria máquina, você pode ter todas as mudanças que quiser, todo o histórico, tudo o que você está fazendo, está tudo em sua máquina. No entanto, se sua máquina cair , você não terá backup. Então, a opção remota, como o GitHub, em que a chamamos de servidor remoto. Então, pode ser o GitHub ou o Bitbucket, pode ser o Azure DevOps. Pode ser uma máquina em seu escritório que está sendo instalada e está servindo a equipe. Seja o que for. Isso é o que chamaremos de servidor remoto. Então esse é o repositório central onde você e muitos outros podem enviar seu código simultaneamente e armazenar. Assim, você terá suas próprias cópias locais, bem como uma cópia centralizada para acesso de todos. Agora, antes de realmente irmos para o repositório central, quero explicar algo sobre os arquivos e quais arquivos realmente queremos rastrear, e não durante a turnê do projeto, eu teria apontado que certos arquivos são mais gerados automaticamente com base em nossas atividades. E isso significa que não precisamos necessariamente mantê-los sob controle de origem. Ou o controle da fonte é o caminhão, os incêndios em que realmente curamos as mudanças. A única coisa que será gerada após o fato que não precisamos necessariamente rastrear o controle da fonte. Então, tudo isso para dizer que existem certos diretórios como OBJ e a rapidez com que eu sou gerado rapidamente. Certo. Então, OB-GYN tem o debulk ou os arquivos de lançamento e outros ativos que estão sendo compilados. que quer fazer com que um dotnet construa nosso dotnet run ou o dotnet watch, eles serão gerados para que não precisemos necessariamente deles no controle de origem. Então, o que acontece é que o Git Hub tem o conceito de um arquivo gitignore ou , em geral, tem conceito de um arquivo gitignore, onde podemos gerar esse arquivo que podemos especificar diretórios. que não queremos. E dado que talvez não sejamos necessariamente especialistas em todos os diretórios que podemos ou podemos nos dar ao luxo de ignorar. É bom ignorar os modelos aos quais podemos ter acesso. Nossa CLI dotnet nos permite, na verdade, apenas gerar dotnet new git ignore. E então isso prosseguirá e gerará esse arquivo gitignore com base nos modelos do Visual Studio. Tudo bem? Esse modelo do Visual Studio sabe que, em qualquer projeto baseado no Visual Studio, não precisamos incluir esses tipos de pastas. Veja aqui o lançamento em massa, você verá que foi um OBJ. E isso significa o que S é maiúsculo ou comum, ou uma vez que tenha essas três letras, devemos ignorá-lo. Isso é o que o visual representava. é o que esse arquivo gitignore dirá quando você estiver enviando para ignorar esses arquivos e os arquivos nesses diretórios. Tudo bem, então essa é uma maneira muito boa de manter seus check-ins ou comentários bastante precisos e concisos. E você pode ver aqui que você pode obter o modelo mais recente desse local no GitHub. Tudo bem, então agora, se voltarmos ao controlador de origem, dizemos publicado no GitHub. Nesse momento, você pode ser solicitado a se autenticar com o GitHub, então basta fornecer suas credenciais e tudo mais. Agora podemos dizer se queríamos publicar em um repositório privado ou em um repositório público. Privado significa que você e todas as pessoas a quem você conceder acesso poderão acessá-lo. Portanto, não poderei acessar seu perfil e vê-lo. E então público significa que qualquer pessoa que se deparar com seu perfil pode vê-lo. Agora, pelo menos esse exercício encorajaria que você se tornasse público , pois facilita o compartilhamento. Isso torna mais fácil mostrar ao mundo o que você fez e no que está trabalhando. E as pessoas poderiam até mesmo examinar e fazer revisões de código e ajudá-lo ao longo do caminho, certo? Então, vou fazer isso em público. Então, quando clicarmos em público , publicaremos isso. Para nos ajudar, ele colocará uma mensagem de confirmação automática. Então, quando dizemos abrir ao receber, ele realmente iniciará o GitHub e mostrará todos os arquivos do seu projeto que foram confirmados. E observe que não existe um OBJ e qualquer outra pasta que possa ter sido lead gerado automaticamente. Excluído, certo, então esses teriam sido ignorados por R, ignore o arquivo. Também recebemos uma primeira mensagem automática de confirmação. E o que acontece é que, quando fazemos nossas alterações , queremos enviá-las para o mecanismo de controle de origem. Queremos incluir um resumo do que fizemos. Então, deixe-me fazer uma pequena alteração aqui em nosso arquivo de visualizações. Fui até lá para compartilhar o layout e o DateTime aqui. Então, o ano aqui é estático. E se eu quisesse que isso fosse dinâmico? Porque se mudar no próximo ano, não quero ter que atualizar esse arquivo manualmente. Então, eu posso mudar isso para ver a hora. Pensamentos. Sem orelha. Vantagem de poder escrever para C-Sharp aqui. Então, estou apenas dizendo que me dê a data e hora a partir deste momento e qual é o ano. E então isso será dinâmico. Então, seja qual for a hora e o que for, nossa vontade sempre mudará de acordo. Tudo bem? Assim, você pode fazer o dotnet run e apenas validar que ainda está vendo o mesmo ano. Claro, e ainda funciona. Mas, é claro, quando isso aumenta, quando o ano aumenta, você não precisa se preocupar em mudar essa não-dualidade. Essa é apenas uma pequena mudança. Você pode observar os sinais visuais que você verá aparecendo como aqueles pequenos pontos e m. Então isso significa que agora este é um arquivo modificador. Então, da última vez que recebi todo esse arquivo, ficou assim. Então, diga que isso agora está modificado, o que significa que quando eu vou para minha guia de controle de código-fonte, ela me dirá que tenho uma alteração pendente porque modifiquei pelo menos um arquivo. Agora eu posso ver a mudança. Digamos que mude o rodapé, o ano para ser dinâmico. Essa é a minha mensagem de compromisso. Agora posso confirmar, o que salvaria as alterações localmente na minha cópia local do repositório do GitHub. Eu também posso cometer e empurrar e comprometer e afundar. Então, commit and push significa que eu confirmarei localmente e enviarei minhas alterações para o repositório remoto, que neste caso é o commit do GitHub. E a sincronização diz que vou me comprometer localmente, enviar minhas alterações para o GitHub e tentar obter quaisquer alterações que possam estar no GitHub. E isso é perfeito para nossa equipe. Quando você tem várias pessoas contribuindo para o repositório remoto, você quer sempre ter as mudanças mais recentes. Você também pode antes de se comprometer e cumprir nosso compromisso de ver retirado do litro. Então você pode realmente usar esses três pontos. Eu posso dizer Paul. E vai olhar e ver, ok, o que eles são? Arquivos que foram alterados no repositório remoto que são diferentes dos seus? Deixe-me fazer essas mudanças. Às vezes, você acabará com conflitos se dois de vocês tiverem modificado o mesmo arquivo, certo? Então você pode acabar com um conflito. Espero que você não acabe com isso. Mas, essencialmente, você sempre quer ter a versão mais recente , tanto quanto possível. Então, você quer fazer piscinas irregulares enquanto trabalha. Mas então eu pressiono que enviarei suas alterações. Tudo bem, então você sempre quer puxar, talvez assustar qualquer acidente antes de empurrar, porque isso ajudará a equipe. No entanto, quando desenvolvemos energia solar para este curso, estou apenas dando um sim absoluto, mas o que podemos fazer é se comprometer e pressionar, já que estamos trabalhando sozinhos. Então, ele virá localmente e, em seguida, sincronizará as alterações com o GitHub. E então, quando eu volto para o Git Hub só para ver o repositório e atualizo. Então você verá aqui que há uma nova mensagem de confirmação que chegou há alguns segundos. E você pode detalhar e ver o que mudou. Mudamos essa linha para essa linha. Tudo bem, esse é o poder dos sistemas de gerenciamento de controle de fonte enquanto você constrói seus projetos. Portanto, faremos check-ins regulares como esse e garantiremos que acompanharemos todas as alterações que fizermos à medida que avançamos. 14. Compreender o arquivo de layout e o Bootstrap: Tudo bem, pessoal, então, nesta lição, quero que passemos mais tempo analisando esse pequeno relance anterior. E eu só queria destacar algumas das partes principais que você pode modificar. Modifique com segurança se quiser personalizar todo o aplicativo de acordo com suas necessidades. Então, vamos começar da linha número um. Então, temos o arquivo de carregamento. E mais uma vez, este é o nosso arquivo de modelo HTML para todo o nosso site. Portanto, as diferentes páginas não precisam começar com todas as tags HTML como faríamos em um site estático. Este é um arquivo dinâmico que cuidará de tudo isso para cada nova peça que quisermos. Ele já vem adaptado com todas as metatags HTML5. E também inclui o Bootstrap. Então, pronto para uso, obteremos o Bootstrap com nosso aplicativo MVC. Agora, o bootstrap é uma biblioteca de interface de usuário muito poderosa. Se é a primeira vez que você ouve falar sobre isso, tudo bem. Então, você pode realmente se familiarizar com isso acessando bootstrap.com. Esse é o site oficial deles. E você verá aqui que a versão mais recente é a 5.2, que é a versão que saiu da caixa com nosso pacote, com nosso projeto, em vez explicar como você o instalaria. Mas não precisamos fazer tudo isso porque ele já está incluído em nosso projeto. A documentação, no entanto, é excelente. Portanto, se houver algo que você precise entender sobre como isso funciona, acesse getbootstrap.com e navegue até lá. Então, vamos ver como podemos personalizar algo como talvez a barra de navegação. Você poderia simplesmente fazer uma pesquisa aqui. E você pode ver nav, nav bar. Isso é um bar bastante justo. Em seguida, eles permitirão que você veja como funciona. Então, aqui nos componentes que você tem navbar, eles falam sobre como ela funciona. Eles informam o conteúdo suportado e esse é o layout geral do código, se você quiser uma barra suficiente parecida com esta. Então, isso significa que o código de barras tudo foi suficiente começa aqui e está entre essas etiquetas de navegação abertas no Android. Então, para cada item que gostaríamos, podemos colocar lá. Então, se quiséssemos a palavra barra de navegação, essa é a nossa marca de barra de navegação, se fosse necessária uma imagem lá, poderíamos colocar a imagem, bem, adivinhe? Também temos essa seção. Desculpe por isso. Também temos essa seção. Aqui temos aquela etiqueta âncora, marca navbar. Então você verá que o Bootstrap é, na verdade apenas um monte de classes que eu criei para nos ajudar a fazer as coisas mais rápido, porque há coisas que sempre queremos fazer. Sempre que temos um aplicativo web, existem cores, sempre queremos seus estilos específicos. Sempre queremos que os caras do Bootstrap sejam os caras que desenvolveram o bootstrap, depois de anos fazendo a mesma coisa repetidamente. Eles criaram um arquivo CSS glorificado. Tudo bem, um arquivo CSS enorme, que é esse arquivo CSS que incluímos em nosso dub, dub, dub roots lib, Bootstrap, CSS. E então você verá que não há buffers lá, mas aquele em que você deseja focar seria o main.css ou o CSS de pontos. Tudo bem? Dot Min é apenas uma versão reduzida desse CSS. Mas a questão é que esse é apenas um grande arquivo CSS. Veja isso, todo esse arquivo CSS, um código CSS e um estilo, certo, só para que não precisemos fazer isso repetidamente. Podemos simplesmente usar sua folha de estilo e aproveitar sua experiência e seu trabalho árduo. Tudo bem, então este é um fim de semana inteiro, personalize o suficiente. Se quiséssemos adicionar uma imagem, isso mostra, tudo bem, se você quisesse uma imagem, você poderia fazer isso e adicionar seu logotipo. Acho que não vamos usar nenhum logotipo, mas quero ver como os esquemas de cores. Ok, vamos lá, para que você possa mudar a cor. Portanto, temos três opções. Temos azul escuro e temos luz. Tudo bem? Aqui, isso mostra as classes que podemos usar para cada uma. Então, na tag nav, se eu voltar para o meu layout, arquivo HTML CSS, minha tag de navegação, assim que a vejo, atualmente usando a luz de hífen da barra de navegação. Tudo bem, então se eu quisesse o tema escuro ou precisaria ver, hífen da barra de navegação é escuro. Oh, bem, esta é a primária primária, então isso me dará a azul. Então, se eu quisesse o escuro, eu usaria este. Então, se eu for aqui e ela soubesse apenas do hífen claro e bg branco até o hífen da barra de navegação escuro e Biji escuro. E então, se eu der uma olhada nisso, ele lançou meu terminal Control Shift e apóstrofo e depois dotnet. Vou apenas dizer dotnet watch. Agora veja bem aquela barra de navegação escura, adivinhe? Não, minhas mensagens não podem ser vistas. Certo. Porque o lar deveria estar aqui e a privacidade deveria estar aqui. Mas isso é preto sobre preto, então você pode ver. Tudo bem, então vamos ver o que o bootstrap recomendaria. Então eles recomendariam, bem, eles não estão me dizendo como colocar o texto em branco aqui, certo? Mas então eu posso procurar cores diferentes para o texto. Tudo bem? Estou apenas rolando porque estou vendo, estou tentando ver se eles têm algum exemplo aqui, qual é o único. Isso é bom. Mas se eu quiser modificar a aparência do meu texto, eles têm uma seção chamada topografia. Aí está, a tipografia está abaixo do conteúdo. E aqui eles nos dizem os diferentes estilos que podemos usar. Então, apenas inicializando sua tag H1, seus HDLs ficarão assim automaticamente. Você pode fazer com que pareçam exibições usando a tela da classe de um a seis. Isso é legal, mas eu gosto mais de cores diferentes. E me desculpe, isso não está na topografia, não deveria estar nas cores. Então, vamos começar a personalizar e ver as cores, certo? Aqui estão as cores diferentes. Agora, o legal do Bootstrap é que ele é muito consistente. Então, se você fizer o primário, você sabe, você vai ter aquele tom de azul, secundário, aquele tom de cinza, seda diz Danger , etc., etc. Então a luz nos dará um pouco de cinza, cor ligeiramente branca em geral. E você verá que tem uma paleta de cores completa. Se você quiser tons intermediários, pode obter todas essas cores sem precisar saber a combinação real, estou com dores de cabeça ou a combinação RGB. É isso que o torna tão conveniente. Tudo bem, agora, se eu quiser que meus textos tenham essa cor específica, posso, em meu código, ir para os itens de navegação que você vê aqui de uma classe ou no item nav, nav e, em seguida, no item nav de a tag âncora que realmente representa o roteamento, certo? Vou explicar o que isso é, B, controle e ação significam mais tarde. Não quero me concentrar nisso agora, mas quero mudar a cor do meu texto. Então, vou mudar essa tag âncora que tem o link de navegação da classe de hífen de texto, hífen escuro, hífen de texto claro. Tudo bem. Agora que alterei esse arquivo e ele não foi recarregado, deixe-me voltar. E boom. Não, é texto, luz de traço. Veja que é tão fácil mudar a cor quando me sinto confortável com as diferentes classes e as diferentes cores que estão disponíveis para mim no Bootstrap, é fácil para mim fazer a transição entre estilos quando eu preciso. 15. Modificando a página inicial: Tudo bem, então o que vamos fazer é modificar nossa página inicial. Então, voltando ao nosso documento de bootstrap, posso pular dois exemplos. Vou abrir isso em uma nova guia. E então, a partir dos exemplos, você vê aqui que eles têm diferentes tipos de amostras de seções que você pode adicionar ao seu site. Então, como você quer que sua foto tenha a qualidade que você deseja que ela tenha? Diferente. Hero Laos, recursos, unhas, etc. Eles até têm páginas inteiras que você pode usar e eu posso aplicar esta. Então, ele tem controles embutidos, como um carrossel, certo? Você pode usar esse modelo de login para o seu site. Você poderia usar todas essas coisas, certo? É só uma questão de saber onde colocar o código. Portanto, esses são filtros diferentes dos quais você pode aproveitar. Esses são cabeçalhos diferentes. Você poderia usar. Heróis, seções de heróis, certo? Com base no tipo de site que você está criando. Mas vou usar esse modelo de carrossel. Acho que isso seria um bom layout de página inicial para nosso sistema de gestão escolar. Ou podemos simplesmente inserir algumas imagens e colocar alguns textos adicionais, se necessário. Para obter a fonte que eu preciso nesta página. O que vou fazer é clicar com o botão direito do mouse e ir para Exibir fonte da página. E acho que visualizar o código-fonte da página deve ser uma opção que todo navegador, todo navegador moderno tem, certo? Então, a partir daqui, estou vendo a página HTML completa, que sabemos que não precisamos de tudo porque estamos apenas modificando nossa página inicial, então eu não preciso de tudo. Eu não preciso das, você sabe, dessas etiquetas. Eu só preciso dessa seção que é necessária para a visualização, certo? Podemos escolher o estilo porque acho que esses estilos são exclusivos do PID. Então, vamos usar esses estilos, certo? Mas não vou colocá-los em uma etiqueta de estilo. Em vez disso, o que vou fazer é colocá-los dentro do nosso arquivo CSS do nosso site. Tudo bem, então esses estilos podem entrar lá. E o que acontece é que se você quiser estender o bootstrap, como o que estaria acontecendo aqui. Se você quisesse estender o Bootstrap, não modificaria o arquivo bootstrap. Você simplesmente escreveria estilos que substituíssem o existente. Tudo bem, então vai pegar a luz do Dash. Se você quiser que seja de uma cor diferente, você pode colocar sua própria classe, em seu próprio arquivo CSS e ver se o ponto tira a luz do Dash. E então, colocar a sua, talvez ganhe cor ou o que quer que você queira mudar. E então ele substituirá esse arquivo, essa classe no arquivo Bootstrap original. Tudo bem, então eu só estou usando esses estilos porque talvez precisemos deles, é claro. E então eu estou rolando para baixo para ver onde o conteúdo começa. Então, o conteúdo, ou, na verdade, também há estilos personalizados para esse modelo. Deixe-me dar uma olhada nisso e eu vou pegá-los emprestados também. Tudo bem? Porque eu precisei deles para a página se parecesse com a demonstração. Então, vou pegar isso emprestado. Você pode ter vários arquivos CSS, é claro, mas vou colocar esse arquivo CSS do site, com todos esses estilos personalizados. Tudo bem? Eu também encorajo você a ler os diferentes estilos, porque aqui você verá que esse é um estilo corporal. E esse estilo corporal pode estender nossa substituição ao nosso estilo corporal existente. Então, pode ser que você os mescle. Você também pode simplesmente deixá-lo sozinho aqui, você verá que está adicionando uma parte inferior acolchoada e uma parte superior acolchoada. Então, nosso original é adicionar uma margem inferior, mas veremos como eles funcionam juntos e, em seguida, faremos os ajustes necessários. Tudo bem? Então, temos isso, temos o CSS para o nosso Um dos pH. Tudo bem, então estamos chegando lá devagar, mas com segurança. Em seguida, quero pegar esta seção que tem o conteúdo que eu preciso. Então, vou começar do carrossel porque lembre-se de que já temos uma seção média em nosso layout. Então, é importante notar essas coisas, certo? Eu tenho o div, que é o contêiner, e depois tenho esse principal. E então eu quero renderizar o corpo e renderizar o corpo me mostrará as vistas. Então, o que eu quero fazer é substituir o conteúdo na exibição pelo conteúdo que eu preciso, certo? Então, o conteúdo que eu preciso para a visualização realmente começaria depois dessa tag média e chegaria até isso significa Todd? Bem, aqui está a tag principal, mas depois do rodapé. Eu não preciso de um rodapé. Já. Tenha um rodapé. Certo. Então eu teria que vir até aqui. Então, deixe-me pegar esse Copiar e colar e vou colar isso dentro do meu arquivo HTML de ponto de índice. Tudo bem, deixe-me diminuir um pouco para que possamos ver que é um ângulo um pouco amargo, certo? Então aqui está nosso carrossel. E se você quiser documentação sobre o carrossel, mais uma vez, você sempre pode acessar site do Bootstrap para obter a documentação. Está abaixo dos componentes. E assim que meus olhos se ajustarem e, mais uma vez, se você não quiser passar por tudo isso, você sempre pode pesquisar no carrossel o que funciona. Estava ali mesmo. Então, como funciona, você verá aqui que essas são amostras de onde você pode obter um carrossel. Tudo bem? Se você quer um carrossel com botões de Bach e botões de avanço, bem, aqui está o código que mostrará o que você precisa substituir usando reticências, certo? E isso é individual e isso também é importante. Se você quiser mais, basta adicionar mais slides, adicionar mais seções como essa para cada item de carrossel ou imagem que desejar. Então você vê que é muito, muito flexível. Então, o exemplo que copiei meio que usa exatamente aquele exemplo que eu tenho, este na verdade tem botões. Este tem texto de espaço reservado para que eu possa adicionar legendas. Aqui estão minhas legendas. E então, em cada item, eu tenho a capacidade de mudar a imagem. Isso é caro, senhor, eu sei que ele está apenas usando alguns SVGs de incidentes de segunda-feira, que podemos mudar eventualmente. Em seguida, temos os botões de navegação. Também temos algumas seções em que eles têm uma classe boa de div e a chamam de aula de marketing. Aqui está o marketing, que tenho certeza que é uma das aulas que pedimos emprestadas. Aí vamos nós. Conteúdo de marketing. Aqui está a classe de marketing. Então, se precisássemos ajustá-lo, personalizá-lo de acordo com nossas necessidades, poderíamos modificar tudo isso se quiséssemos. Existem muitos espaços reservados e imagens para que possamos preenchê-los, é claro, então você tem o divisor de recursos e podemos adicionar o que você quiser. Agora que fizemos esse ajuste e eu ainda estou fazendo um relógio dotnet, caso você tenha parado o relógio dotnet desde a última lição, você poderia simplesmente iniciar um relógio dotnet. Mas quando passamos para pré-visualizar nossa página, é isso que obtemos. Tudo bem? Agora, alguns ajustes, é claro, serão necessários porque aqui vemos que temos um acolchoamento na parte superior que não queremos. Não queremos esse preenchimento acima da nossa barra de navegação. Então, vou voltar e modificar o CSS. É por isso que eu disse que devemos prestar atenção ao CSS e saber o que estamos adicionando e modificando. Então eu vou pegar toda aquela blusa acolchoada. E uma vez que eu vejo isso, isso é tudo que eu sei. Parece normal, certo? E então todo o resto parece bom para mim, certo? Assim, podemos ter uma legenda alinhada ao centro. Podemos sobrescrever uma legenda alinhada. Podemos ter uma legenda alinhada à esquerda. E, claro, essas são imagens que podemos mudar. Tudo. Esses são conjuntos de textos que podemos mudar de antigamente. E podemos colocar nosso conteúdo, pois precisamos colocar onde costumo obter algumas imagens em pixabay.com. É uma excelente fonte para algumas imagens interessantes, uma vez que não as usamos comercialmente nem damos créditos ao artista ou a quem quer que seja o crédito da imagem. Então eu posso tirar algumas dessas imagens. E o que vou fazer é não baixá-los. Vou apenas resolvê-los. Não vou baixá-los, mas temos a opção de baixar um e mostrar como colocamos uma imagem em nosso projeto. Mas vou incorporar os outros dois diretamente do site para que eu possa fazer o download gratuito e baixar aquela pequena imagem do TPR 12 80. Você também pode reduzi-lo. Então, vamos usar 12 80 por 853 para este. Blackboard, não, eu não sou um robô. Através das garotas, é claro. Em seguida, baixe o arquivo. Tudo. Agora, o que eu gosto de fazer é arrastar o arquivo do navegador para o código do Visual Studio e nada que seja um recurso muito, muito legal de aproveitar, certo? Assim, depois que o arquivo for baixado, posso arrastá-lo e soltá-lo dentro do Visual Studio Code. E onde eu quero, está dentro da pasta raiz real do dub dub. E, por extensão, eu o gostaria em uma pasta de imagens, então simplesmente o arrastei. É conhecer dub, dub, dub roots. Tudo bem. No entanto, não quero que fique lá, tudo está organizado. Eu quero me manter organizado. Então, vou clicar com o botão direito do mouse em dub, dub, dub root para criar uma nova pasta, vou chamá-la de imagens. E então eu posso arrastar essa imagem para dentro. Em seguida, eu renomearia a imagem. Portanto, em meu curso on-line, sempre certifique-se de que é melhor renomear a imagem da forma mais conveniente possível. Então, Blackboard. Tudo bem, esse é o nome da imagem que vi na minha opinião. Eu sei modificar. Deixe-me diminuir um pouco o zoom para que eu possa navegar um pouco mais rápido. Agora posso modificar a imagem que está sendo usada em um dos itens do meu carrossel listado no primeiro carro, então item está usando esse SVG. Eu não quero esse SVG. Então, vou fazer uma combinação de ver como deveria ser. Então, aqui está a aparência da imagem do item do carrossel no código. Tudo bem? Mais uma vez, ele está apenas usando vários espaços reservados nos exemplos, compreensivelmente, mas vou usar isso e substituir esse SVG. E então, para a imagem SRC, vou colocar tilde lá. Então, até o, esse é o símbolo espanhol. E apenas informe de onde estou obtendo essas informações. Se eu voltar para o meu layout, você verá aqui, isso é tudo o que fazemos referência a um arquivo que está na pasta lib nas raízes dub, dub, dub, dub, certo, então live jQuery, jQuery min, aqui está jQuery, aqui está isso, aqui está o arquivo. Tudo bem. Então, se eu quisesse uma imagem da pasta de imagens e a mesma dub, dub, dub root, devo dizer que é tilde slash. E então seguimos o caminho, então corte as imagens, corte. E então eu vou dizer quadro preto, pontos, GP. Tudo bem? E então eu vou transformar isso em uma alternativa, basta ver uma imagem de quadro negro. Tudo bem. Agora, quando eu voltar à minha visão, deixe-me atualizar. Tudo bem, então aqui está nossa página inicial. Sabe que temos aquela lousa, certo? Uma vez, se eu quisesse mudar o título, saiba, então, para o título do texto aqui, título de exemplo, sistema School of Management. Tudo bem, então textos representativos. Então você vê que estou apenas pegando o código existente, estou modificando-o para o Havaí, eu preciso dele. E às vezes é assim que começamos até ficarmos cada vez mais criativos e cada vez mais confortáveis. Melhor sistema de gestão escolar baseado em ESP, dotnet, MVC, Alright, b.net, Core six, são sete. Porque o que estamos fazendo é reutilizável, tudo bem, assim que eu começar a falar sobre a gerência, tudo bem, vamos lá. Portanto, nenhum sistema de gestão escolar, sistema de gerenciamento de vesículas, inscreva-se hoje. Isso não faz nada, mas acho que é bom colocá-lo lá caso você esteja construindo seu produto. Então esse é o nosso primeiro slide. Assim, você pode realmente fazer as mesmas etapas com as outras imagens, se quiser. Quando eu disse que não iria baixá-los, o que eu pretendia fazer quando disse que foi copiado o link da imagem. Então, depois de copiar o link da imagem, ele é um link direto para a imagem hospedada, então não preciso copiá-lo. É um CDN, então eu poderia simplesmente incorporá-lo sem baixá-lo. Então, se eu for para o próximo item do carrossel e substituir essa tag SVG por aquela tag de imagem. E então, para o SRC, vou usar esse link CDN. Tudo bem? E foi isso que eu coloquei lá. Tudo bem? E então essa será uma imagem geométrica. Então, quando eu volto e olho, tudo bem, aqui está nosso Blackboard e depois aqui está nossa imagem de geometria. E esse é meio barulhento. Então, você pode querer avaliar como ele funciona com a legenda, certo? E depois crianças na Índia? Sim, copie o link da imagem. E queremos alguma representação das crianças que estarão nessa escola, certo? Então, essa é a modificação final que estou fazendo e estou apenas estragando um pouco até me orientar. Certo. Então, lá vamos nós. E deixe que tenhamos modificado nossa página inicial para parecer algo parecido com o que queremos. Tudo bem. Também vou remover a seção de legenda da imagem geométrica. Acho que não precisamos dessa legenda. Leva o mínimo. Então, vou remover as duas tags P, são apenas as tags H1 e p. E vou deixar o botão que diz Saiba mais, certo? E para as crianças, um, estudantes inteligentes. Tudo bem? E de todo o mundo. Tudo bem. Só estou mostrando, sei que podemos navegar na galeria. Bom. Então, acho que essa é, na verdade a página de modelo inicial perfeita para esse tipo de sistema. Tudo bem. Eu preciso ser um estudante inteligente com essa ortografia. Peço desculpas pelo canto principal. Aí vamos nós. Tudo bem, então eu vou embora, eu vou deixar você ir em frente e personalizar o resto dessas seções, certo? E, na verdade, trata-se apenas de olhar e prestar atenção ao código. Tudo bem, então se você simplesmente percorrer e dar uma olhada, aqui está a seção de marketing. Aqui estão os espaços reservados, SVG. Você pode substituí-las por suas próprias imagens que desejar nelas, nesses pequenos círculos. Aqui está o título, aqui está o texto abaixo do título e o botão Exibir detalhes, certo? Portanto, com base no tipo de produto que você está criando, você pode modificar essas seções representar mais o que você precisa. Você também pode simplesmente remover essa seção. Pode ser que você não queira essa seção no site. Sei que já sabemos como adicionar nossas imagens. Então, para esses espaços reservados de 500 por 500 aqui, as tags SVG mais uma vez que podemos substituir. Tudo bem, então vá em frente e explore e divirta-se com isso. 16. Adicionando uma página sobre nós: Tudo bem, pessoal, então, nesta lição, vamos dar uma olhada em como podemos criar nossa própria página. Então, agora temos uma casa onde eu tenho privacidade ou se quiséssemos uma página Sobre nós? Como vamos adicionar isso? Então, vamos voltar ao Visual Studio Code. E vou começar com um controlador. Temos o controlador doméstico e sabemos que o controlador doméstico nos permite navegar, indexar e ter privacidade. E temos o terceiro botão de opção. Tudo o que precisamos é nosso, não construído em um, certo? Então, vou primeiro criar resultados de ações públicas seguindo os modelos das anteriores. E então eu vou chamá-lo de barco. Então isso significa que eu quero uma página chamada barco. Tudo bem, então o oxigênio precisa ver um barco. E então, todo método de resultados de ação precisa voltar à exibição. Eu gostaria de fazer isso. Esse é o esqueleto que eu faço primeiro. Antes de começar a escrever a mágica. Garden disse que este é um poço simples, então não haverá mágica neste em particular. Mas agora temos a visão, desculpe, de jeito nenhum eu tenho o leilão no controlador. Saber. Se eu tentar navegar até lá. Tudo bem, e eu vejo slash, home slash ou boats, então você receberá esse tipo de erro, pelo menos enquanto estiver testando. Então, vai dizer que é uma exceção de operação inválida. A vista da morada não foi encontrada e esses foram os locais pesquisados. Ele procurou na barra inicial um arquivo chamado barco, faz CSS HTML. Também é uma barra de visualização, barra compartilhada sobre isso. Cse é OGM. Então, em essência, é por isso que erro não precisa necessariamente estar na pasta inicial. Ele pode ser compartilhado porque o erro pode ser encontrado lá. Portanto, sempre que dizemos exibição de retorno, ele automaticamente procurará nesses locais a visualização que estamos retornando por um arquivo com o nome da visualização que dissemos que retornaremos. Então, como não conseguiu encontrá-lo, ficou louco. Então, avise-nos, volte e crie esse arquivo. Então, vou clicar com o botão direito do mouse em casa, certo? Não percebi que essas pastas geralmente têm uma cenoura e os arquivos amanhecem. Tudo bem, isso pode ficar confuso, especialmente quando você está arrastando e soltando, como quando arrastamos e soltamos o Blackboard. Mas ele começa a destacar os diferentes blocos e seções de arquivos. E você verá essas linhas ao longo do caminho. Portanto, tenha cuidado com essas coisas. Então, vou clicar com o botão direito do mouse e dizer novo arquivo, e colocarei o nome de boat dot CSS HTML. Pressione Enter e agora eu tenho meu arquivo de visualização. Agora é um arquivo vazio, mas digamos que eu queira seguir uma sugestão de, ok, quais são as primeiras coisas que eu preciso no arquivo? Posso ver os modelos dos arquivos que o precederam. Aqui, vejo que há uma seção de visualização de dados para o título, então posso adicioná-la na parte superior. Certo. Isso me permite definir o título da página que deve aparecer na exibição. Porque lembre-se que no layout, esse é o título, certo? Então, ele verá o que está nos dados de visualização no momento. Passe o nome do site, esse é o título que a página aparece, Senhor. Portanto, posso especificar que esta é a página Sobre nós. Tudo bem, então tudo o que preciso fazer é colocar o HTML. Eu quero essa visão, improvável que tenhamos visto que não precisamos todos os modelos de HTML e tudo mais, só precisamos de coisas específicas. Então, vou voltar aos nossos exemplos para sites Bootstrap. E vou escolher um exemplo muito simples. Eu vou usar essa capa, certo? Então, se eu pular para este modelo de cava, eu realmente só quero esse texto. Eu só quero o texto que está lá. Vou apenas dizer Exibir fonte da página. Eu não vou entrar no conjunto usando todos os estilos e assim por diante. Na verdade, estou interessado apenas no que está nesta seção principal. Tudo bem, então pegue e eu vou colar aqui. Tudo bem. Então eu posso mudar o texto para que sejamos capazes. Mantenha a empresa de desenvolvimento da Pebble. Tudo bem? E você pode colocar em qualquer parágrafo que quiser para ver como tanto a empresa quanto você pode ver , entre em contato conosco, contato para obter mais informações. Tudo bem. Não estou necessariamente focando em todo o HTML sofisticado que podemos inserir. Só estou te mostrando como podemos juntar as peças. Um site de aparência decente para o aplicativo MVC. Então, se atualizarmos lá, veremos nosso texto corretamente. Agora. Como faço para chegar aqui? Certo, além de digitar a barra inicial ou ambas? Como faço para chegar a esta página? Como eu o digitei manualmente, mas não podemos esperar que nossos usuários saibam que precisamos digitar o botão, precisamos dar a eles uma maneira de serem duplicados. Portanto, é da mesma forma que eles podem chegar em casa e ter privacidade. Tudo bem, então o que fazemos é modificar a seção de navegação. Então, vamos voltar para o nosso layout.css, HTML. E aqui estão, há itens suficientes, então temos itens para casa, vou ter itens suficientes para privacidade. Então, eu preciso de outro item de navegação e estou disposto a colocar sua privacidade hormonal intermediária. Tudo bem. Esse, tudo o que fiz foi copiar e colar. Então, acabei de destacar um dos itens de navegação, Open, LI, anchor tag, close ally, copy e depois cole. Tudo bem, nada de especial. Ao fazer isso, afirmo que sim, assume a consistência das luzes do Dash, então não estou digitando do zero sem correr o risco de errar, apenas copiando, colando e reutilizando. Não, não vi que examinaremos quais são esses atributos do SP. Portanto, esses não são atributos HTML regulares. Esses são ajudantes de etiquetas de barbear. Tudo bem? Então, para a tag âncora, temos um auxiliar que nos permite especificar uma área. Uma área é uma aplicação especial, literalmente, especialmente para a era e para a web. Não temos nada disso, pelo menos ainda não. Então você não precisa se preocupar com isso. Tudo bem? Mas nós temos um controlador. Qual é o controlador o qual você gostaria de navegar? Então, em HTML normal, você teria que ler H ref é igual a e, em seguida, tentar descobrir a barra, essa pasta, cortar aquela pasta para chegar ao arquivo desejado. Tudo bem. Em um ambiente dinâmico como esse, dotnet Core facilitou para nós a figura sem nenhum tipo de navegação, certo? Porque ele sabe que está usando controladores e visualizações. Na verdade, podemos especificar que queremos ir para esse controlador. Podemos ver a casa porque ainda estamos usando o controle doméstico. Qual ação você quer? Então, quando você acessa, ao clicar em página inicial, a tag de âncora inicial, ela deve ir para o controlador doméstico e para a ação de índice. Quando você clica na etiqueta âncora de privacidade, ela deve ir para o controlador doméstico e para a ação de privacidade. Lembre-se de que a ação é o método definido aqui que deve retornar a exibição. Então, se eu quiser ir para a página Sobre, preciso acessar o controle inicial deles e a ação sobre. Então, eu posso modificar isso no código e vou usar este. Então, a ação que vou fazer é um parafuso e o texto que espero ver no ísquio é um software de parafusos fazendo essas modificações. Quando eu recarrego o site, logo recebo um erro 500. Oh, eu percebo que às vezes quando você modifica e está reconstruindo e você muda para a janela, na verdade ela fica meio Frisco até o dia você não pode trocar enquanto eu estou reconstruindo. Deixe-o reconstruir um pouco antes de trocar. Tudo bem, acabei de dizer que sim, reinicie e saiba que foi reiniciado. Posso voltar e recarregar o site. Aí vamos nós. Sei que vejo meu novo URL, link do nosso menu, em vez disso, quando clico nele, ele navega até o controle inicial e a ação sobre, que retornará nossa página sobre nós. Tudo bem, então é fácil realmente configurar suas visualizações e sua navegação entre suas visualizações e as diferentes seções do seu aplicativo. 17. Adicionar ao GitHub: Tudo bem, pessoal, então atingimos outro marco e agora temos uma melhor compreensão de como nossas visões o layout e tudo se combinam. Adicionamos imagens, modificamos nossa visualização inicial, adicionamos novas visualizações. Eu não conhecia as ações do nosso controlador e acabamos com alguns arquivos novos e alguns arquivos modificados. Então, agora precisamos fazer o check-in ou nos comprometer com nosso sistema de gerenciamento de controle de origem , o que é bom. Então, apenas por meio de dicas visuais, qualquer coisa que seja verde tem um UV configurado para significar que não está rastreada, o que significa que é um novo arquivo que não conhece. Então, toda vez que você adiciona um arquivo, ele fica sem controle e fica verde. E então, uma vez que o arquivo exista desde a última galinha e você tenha feito modificações, ele será laranja ou âmbar e aparecerá modificado, certo? Assim, podemos ir até nossa guia de controle de origem, onde eles nos informam sobre nossa guia de controle de origem, onde as diferentes mudanças. E a partir daqui, podemos realmente especificar se queremos que seja, como ignorar, podemos desfazer as alterações, podemos adicionar algo específico. Em primeiro lugar, gitignore. Às vezes, queremos fazer isso se tivermos arquivos de configuração que não queremos uma galinha, certo? Poderíamos adicioná-lo ao gitignore. Poderíamos fazer como um estágio, como se você quisesse cometer algo nulo, mas não tudo. Poderíamos dizer. Estágio. Como eu disse, se, se você fez mudanças, mas não as quer mais, pode simplesmente dizer descartar as alterações. E você pode até mesmo fazer uma comparação. Então, você pode dizer que abra as mudanças e isso realmente mostrará uma comparação lado a lado entre a existência de aves aquáticas e o que elas não são, desde que você fez suas modificações. Então, essas são ferramentas que podem nos ajudar a garantir que não estamos verificando suas próprias coisas e que estamos definitivamente no caminho certo com as mudanças que esperamos ter feito. Agora, podemos ver visualizações e layouts de sites adicionados ou manipulados, certo? Então essa é a nossa mensagem de frango. Então, qualquer pessoa que apareça e veja nossas mudanças pode nos dar uma sinopse do que aconteceu com esse compromisso. E vamos apenas nos comprometer e pressionar. Tudo bem, agora que resolvemos esta seção, nos vemos na próxima lição. 18. Conecte-se ao banco de dados com o Azure Data Studio: Tudo bem, pessoal, nesta lição, vamos criar nosso banco de dados que usaremos como a espinha dorsal do nosso Sistema de Escola de Gestão. Saiba, vamos começar abrindo nosso Azure Data Studio. E vou usar a imagem do docker para nosso Microsoft SQL Server que instalamos a partir de atividades anteriores. É aí que criaremos nosso banco de dados. Então você pode revisitar isso. Ouça só para ver como você abriria o Darker e lançaria esse banco de dados. Mas eu já tenho mais escuro e vou explicar algumas coisas para o caso de você parar o contêiner a partir desse momento. E você precisa se familiarizar com o buraco para começar a funcionar. Tudo bem. Assim, você pode abrir sua área de trabalho Docker. Desta vez, vou usar a área de trabalho em vez da CLI. E, abaixo da seção Contêineres, poderíamos ver todos os contêineres que temos atualmente. Então você provavelmente só tem um. Isso é bom. Eu tenho vários. Tudo bem, mas aqui está o que criamos anteriormente, que é o contêiner do Microsoft SQL Server. Certo? Agora, antes de clicar em executar ou iniciar, eu só queria ressaltar que, caso você tenha esquecido algumas das configurações que colocou lá, você pode realmente voltar verificar todas as configurações. Então você pode realmente examinar a inspeção. Ao clicar duas vezes nele, você pode ir para Inspecionar. E então, no ambiente, você verá as variáveis de ambiente que adicionamos passadas quando as configuramos. Então, eu realmente esqueci minha senha. Certo? Essa é a postura que eu usei. Então, posso simplesmente copiar isso e ter isso em mente, pois precisarei dele quando estiver me conectando. E lembre-se de qual é o número do relatório que você colocou, aquele número de suporte que você está tentando conectar a alguém para iniciar esse contêiner. E eu posso assistir à tela de registros só para ver se ela está iniciando com sucesso e se não há erros em nenhum lugar. Isso é bom. Agora, quando estiver em funcionamento, e se eu voltar, veja aqui que está verde, então está funcionando e está transmitindo na porta 1.400. Não, posso me conectar a ele usando o Azure Data Studio. Então, no Azure Data Studio, posso clicar nessa nova conexão. Você pode não ter tantas conexões quanto eu. Isso é bom. Mas a partir daqui, vou ver como Microsoft SQL Server do tipo Nixon é um host local. E então, quando estamos usando recursos visuais, desculpe, quando estamos usando o SQL Server, use uma vírgula para a porta, certo? Então, vírgula localhost e, em seguida, 1.400. Tudo bem? O tipo de autenticação é login SQL. O nome de usuário é SE, conforme configuramos por padrão ou como sabemos por padrão. E nossa senha é a senha que você usou. E então, quando eu fizer tudo isso e clicar em Conectar, ele me avisará que precisa um certificado confiável para que eu possa simplesmente habilitar o certificado do servidor de certificados de confiança. E uma vez que eu faço isso, não, eu estou conectado. Portanto, eu tenho o coma de 1.400 localhost conectado como SE. E agora posso manipular todos os ativos desse servidor. O interessante disso, o Your Data Studio, é que ele permite até mesmo categorizar sua conexão. Então você vê aqui que eu posso limpar algumas das minhas categorias. Eu posso simplesmente criar um novo grupo de servidores. E eu vou dizer como o Azure. E então eu posso arrastar todos os meus olhos, suas conexões, para esse grupo. Tudo bem, então eu tenho menos barulho e posso encontrar o que eu quero que seja mais facilmente. Eu posso derrubá-lo. E então eu posso criar outro para o local. Tudo bem? E então eu posso colocar aquele anfitrião local lá. Eu poderia até especificar que um é mais sombrio do que este não é médico. Então, essas são todas as minhas instâncias locais. Como você pode ver, eu tenho várias instâncias locais e, inadvertidamente, me desconectei da mais escura. Então, vou voltar ao passado E agora me lembro do parser desta vez, então não preciso fazer isso todas as vezes. E você verá aqui que eles estão vendo que deveria criptografar a conexão. Eu posso dizer verdadeiro ou falso. Confie no certificado do servidor, nesta clínica. E eu estou pronto para ir novamente. É assim que nos conectamos ao nosso banco de dados usando o Azure Data Studio. Agora, quando voltarmos, começaremos a criar o banco de dados. 19. Criar banco de dados: Tudo bem, então vamos começar a criar nosso banco de dados. Então, vou abrir uma nova consulta e essa nova consulta será contra nossa conexão. Sempre podemos mudar a conexão pegando essa conexão e escolhendo a outra conexão que queremos. Mas tudo bem. Vamos continuar como está agora. Você notará que essa interface de usuário é muito semelhante à interface do Visual Studio Codes. Tudo bem, então podemos controlar muitos atalhos de teclado , um controle próximo menos. Podemos conectar as conexões para decidir nos dar mais espaço. Portanto, é uma interface de usuário muito familiar , muito limpa e fácil de usar. Agora vamos criar um banco de dados chamado banco de dados de gerenciamento escolar. Tudo bem? E esse banco de dados é um pouco baseado no banco de dados que foi usado no meu curso de SQL. Então você pode conferir isso. Se você não está muito familiarizado com o SQL e o SQL Server , pode conferir esse curso. No entanto, se você já tem algum conhecimento de banco de dados e se sentirá em casa. E vou explicar à medida que avança , só para que você possa acompanhar. Portanto, a primeira declaração que queremos escrever é criar banco de dados. E isso nos permite especificar o nome de um banco de dados que gostaríamos de criar. Tudo bem, então vamos querer criar um banco de dados chamado banco de dados de gerenciamento escolar. Em seguida, temos que especificar uma meta. E então temos que usar o banco de dados que acabamos de criar agora. E escrevendo um roteiro, podemos executar cada linha. Então, eu posso destacar isso e dizer Corra, e depois destacar isso e dizer correr. Porque o que está acontecendo é que quando chega aqui, isso não existe, certo? Então, até que esse seja Ron, isso não existe. Então, veremos aquela linha vermelha ondulada representando um erro. Mas tudo bem, porque podemos simplesmente escrever o documento inteiro e ele será executado a partir da linha um, linha dois, linha três e depois de todo o resto. Portanto, não precisamos nos preocupar com aquela linha vermelha ondulada, certo? Não. Em seguida, vemos criar tabela. No primeiro dia disso, vou criar um aluno, tudo bem. Então, crie alunos de mesa e ela abrirá e fechará parênteses. E aí vamos especificar algumas colunas. Então eu vou dizer id INT. Sempre recomendo que, ao criar um banco de dados, você sempre tenha uma coluna de ID de chave primária gerada pelo banco de dados. Tudo bem? Então, aqui estou vendo que id é inteiro, é uma chave primária e deveria ser uma coluna de identidade. Identidade significa que ela será automaticamente incrementada à medida que avança. Depois, outras coisas que os alunos terão, nosso primeiro nome, sobrenome, data de nascimento. E, na verdade, vou apenas conectá-los. Tudo bem, então eu não te aborreço com a digitação. Você pode pausar e replicar essas colunas adicionais. Primeiro nome, estamos usando n var char 50 e não é permitido ser nulo, certo? A mesma coisa com sobrenome, data de nascimento. Veremos os dentes e permitiremos que seja nariz. Não vou especificar um que não seja nulo. Então isso significa que se eu souber que entra aqui, tudo bem. Tudo bem? Então, a próxima mesa que teremos são palestras. Para palestras, vou fazer o mesmo tipo de declaração, exceto que estamos usando apenas FirstName e LastName. Tudo bem, então eu poderia realmente ter copiado esse espaço que transformava os alunos em palestras e removesse o ritmo. Você verá que eles são muito semelhantes em estrutura. E então o último que queremos é um a quatro cursos. Então, como eu disse, é um sistema de gestão escolar para uma pequena escola. Eles só querem poder rastrear quem são os alunos. Eles querem rastrear quem são as palestras. E então eles queriam acompanhar quais cursos estão sendo oferecidos. Qual o nome do curso? Qual é o código do curso? E essa neve terá uma restrição única. Isso significa que dois cursos nunca devem ter o mesmo acorde. Tudo bem? Provavelmente, isso também pode ser exclusivo para o nome, mas as regras de negócios orientarão essas decisões. E então o número de créditos que esse curso terá. É um sistema de gestão escolar simples, muito, muito simples. Então, agora criamos nosso script de banco de dados. Eu sei que queremos realmente criar o banco de dados, porque se voltarmos e olharmos, os bancos de dados estão vazios. Então, quando clicarmos em Executar, como eu disse, ele percorrerá todo o script e criará nosso banco de dados. Então, obtemos essas dicas visuais que iniciaram a execução e, em seguida, tudo foi concluído com sucesso. Então, se eu atualizar bancos de dados, fui ver meu EB de gestão escolar e, em seguida, posso detalhar e ver as tabelas que estão lá. Tudo bem, então é fácil criar um banco de dados usando scripts. E o legal dos scripts, caso você não esteja muito familiarizado com SQL e script funcione, é que eu posso salvar esse arquivo e reutilizá-lo posteriormente, certo? Portanto, é apenas um arquivo de script. É apenas um arquivo de texto que contém instruções sobre como o buraco para criar um banco de dados, posso salvá-lo no meu sistema de arquivos local. Se eu precisar desse banco de dados novamente, posso alterar o nome aqui ou, mais uma vez, ele percorrerá todos esses cenários em meu curso de SQL. Agora, eu tenho o banco de dados criado. Meu próximo objetivo é realmente conectá-lo ao meu aplicativo. Então, o banco de dados e ele está sendo executado de forma mais escura estão facilmente em outro servidor, certo? Isso realmente não importa no grande esquema das coisas. O que importa, porém, é que eu preciso meu aplicativo veja esse banco de dados e possa interagir com ele. Então, veremos como podemos aproveitar uma biblioteca chamada Entity Framework para fazer isso com nosso aplicativo web. 20. Banco de dados de andaimes com o Entity Framework: Tudo bem, pessoal, então criamos nosso banco de dados e tudo o que precisamos para nos conectar a ele por meio de nosso aplicativo. E há poucas coisas que precisamos adaptar ou aplicar para facilitar isso. Então, ele usará o Entity Framework, que é incorporado pela Microsoft em nosso carro-chefe ou para conectividade e manipulação de bancos de dados. Portanto, ORM é a abreviação de mapeador relacional de objetos. Acesse o Entity Framework em nosso projeto, podemos ir para o arquivo CSS. Poderíamos adicioná-los manualmente aqui, mas na verdade usaremos apenas a CLI dotnet. E você pode ver o que acontece nesse arquivo CSV quando executo esses comandos. Então, o comando que vou executar é apenas aumentar e aumentar os realistas, apenas aumentar e aumentar os realistas sejam imóveis e o tamanho da tela. Então, o comando que estamos executando aqui é dotnet add package. Tudo bem? E o que isso fará é entrar em contato com o gerenciador de pacotes chamado New gets. Você entrará em contato com novos repositórios git e obterá o pacote, a versão mais recente do pacote. Se não especificarmos, nesse caso, não vou especificar uma versão. E o que vou tentar obter é o pacote para o Microsoft dot Entity Framework Core SQL Server. Neste pacote, podemos simplesmente mergulhar no dotnet add package Microsoft, mas Entity Framework, Core SQL Server. Neste pacote, ele tem todos os conectores e todo o código que precisamos para facilitar a comunicação com um banco de dados do SQL Server. Entity Framework é de código aberto, é multiplataforma e também tem suporte para diferentes tipos de bancos de dados. Portanto, se você estiver usando sequel light, Postgres ou MySQL, existem bibliotecas que são extensões em pacotes, em vez de Entity Framework Core para esses bancos de dados específicos. Nesse caso, estamos usando o SQL Server. Então, vou colocar isso e pressionar Enter e esperar alguns segundos. E então ele vai sair e ele vai baixar aquele bolso do NuGet e eles estão no arquivo RCS bridge, você vê um novo nó aparecendo informando que sabemos que temos uma referência de pacote para a biblioteca que acabamos de criar a ferramenta de referência, e a versão é 7.0. Tudo bem, o Entity Framework Core seven é compatível com dotnet seeks. Portanto, mesmo se você estiver usando dotnet eks, você pode usar a versão sete do Entity Framework Core. Agora, outro pacote que eu quero instalar antes de seguir em frente seria projetado. Então, vou pressionar para obter a Lira e o comando mais recentes. E então vou remover o SQL Server do comando e substituí-lo pela palavra design. E então eu pressiono Enter. E então ele fará a mesma coisa, contato, pegará o pacote e, em seguida, atualizará nosso arquivo CSV com esse nó. Então, aqui você verá que ele tem mais algumas coisas para adicionar além da referência do bucket, mas tudo bem. Então, agora que temos o Entity Framework em nosso projeto, precisamos adicionar o que chamamos de cadeia de conexão. Portanto, a cadeia de conexão é como um endereço ou tem uma série de instruções que permitem ao aplicativo ou como ele pode se conectar ao banco de dados. Então, isso está em nosso arquivo up settings.js, JSON. Aqui. Vou apenas modificar isso, e isso é apenas um arquivo JSON normal, certo? Então, é a sintaxe do CMG. Sabemos que é um par de valores-chave. As cadeias de conexão são uma seção. Então, você pode realmente começar a digitar as cadeias de conexão e pressionar Enter e ele as preencherá para você. Deixe-me fazer isso de novo. As cadeias de conexão entram e ela preenche, ela segura. Tudo bem? Então, dentro das cadeias de conexão você pode ter vários bancos de dados. Assim, você pode ter quantos pares de cadeias de conexões com valores-chave precisar. Essa primeira cadeia de conexão que vou precisar para este aplicativo é aquela que se conecta ao dB de gerenciamento escolar. Então, abra e feche aspas. E aí eu estou escrevendo o nome da string de conexão, que é a conexão de banco de dados da School of Management. Tudo bem, então temos os valores, então, dois pontos e, em seguida, abrir e fechar aspas. Então, aqui é onde realmente colocamos a cadeia de conexão. Portanto, nossa string de conexão dirá que servidor é igual e, em seguida, o endereço do servidor, que em nosso caso é localhost vírgula 1.400, porque estamos usando nosso banco de dados hospedado mais escuro que configurado. No entanto, esse é apenas o endereço do banco de dados. Então, se eu estivesse usando minha instância de host local, eu diria localhost. Se eu estivesse usando minha instância do SQL Express, eu diria SQL Express, certo? Então, se você estiver usando o SQL Express e não estiver mais escuro, é assim que esse endereço seria. Tudo bem, então estou usando darker, mais uma vez, localhost 1.400. E então especificamos o banco de dados. O banco de dados aqui, acho que o chamamos de gestão escolar. Eb sempre pode voltar e verificar como você o chama. Então, isso é banco de dados. E observe que estamos usando ponto e vírgula. E então temos que ver uma conexão confiável no placar. Portanto, temos que declarar se é ou não uma conexão confiável, o que neste momento vou dizer apenas falso, porque o banco de dados está procurando determinados requisitos de segurança sejam atendidos e podemos reservar isso para mais configurações de produção do que quatro empreendimentos sentados. Então, por enquanto, vou dizer que isso é falso. E então temos outra configuração que diz vários conjuntos de resultados ativos. E isso basicamente especifica se várias conexões são permitidas simultaneamente. Sim. E então a última é criptografar igual a falsa. Bem, não finalmente, mas a última relacionada à segurança é criptografar é igual a quedas, especialmente no EF Core. O que acontece é que, na versão mais recente do EF Core, o padrão será verdadeiro, então você deve declarar especificamente que é falso, ou isso assumirá que está criptografado e então, se não estiver configurado corretamente, sua conexão não será concluída. Essa conexão apenas definirá essas duas quedas em nosso ambiente de desenvolvimento. Em seguida, precisamos especificar o nome de usuário e a senha. Agora, essa parte é opcional. ID de usuário e senha são opcionais se você estiver usando o SQL Express ou se estiver usando uma instância do SQL Server instalada localmente, isso significa que o padrão será a autenticação do Windows em você não precisa especificar um ID de usuário e uma senha. No caso de você precisar usar um usuário como se estivesse usando o SQL Login, se você o configurou dessa forma ou usando o Docker, onde não há nenhuma opção real de fazer o contrário, então você definitivamente terá que especificar o ID do usuário. E então você terá que especificar a senha e eu esqueci minha senha. Deixe-me voltar para o escuro e olhar na minha imagem. Aí vamos nós. Continue clicando no lugar errado. Então, estou emprestando esse valor de senha para minha string de conexão porque de qualquer forma que eu me conecte a ela, é assim que o aplicativo precisará se conectar a ela. Então, essa cadeia de conexão é como realmente nos conectaremos ao banco de dados e obteremos o banco de dados. Então, nesta lição, não estamos apenas criando uma cadeia de conexão, mas também o que causará tosse, incorporando o banco de dados em nosso aplicativo. Adotamos o que chamamos de abordagem que prioriza o banco de dados, que significa que criamos um banco de dados e depois um banco de dados e depois conectaremos o aplicativo a ele. A alternativa, pode ser que tenhamos esse aplicativo e usemos código, significa que estamos escrevendo código, classes e modelos. E depois usar isso para informar o banco de dados sobre sua aparência. Isso é chamado de Code First. Outros cursos em que mostro código para nós , este curso, tenho certeza de que primeiro é o banco de dados, para que possamos ter uma ideia de como podemos inserir um banco de dados existente, porque muitas vezes o banco de dados é já existe e precisamos atualizar o aplicativo ou criar um aplicativo para o banco de dados. Precisamos conhecer um todo para examinar um banco de dados existente e modelá-lo em nosso aplicativo. Então, eu vou fazer apenas o CLS. Portanto, temos uma nova janela de terminal aqui. Vocês são destruições. E então vamos escrever um novo dotnet. Estêvão. Mas antes de fazer isso, na verdade precisamos instalar o conjunto de ferramentas EF em nossa CLI dotnet. Então, preciso dizer dotnet new install e depois vou instalá-lo globalmente. Então, hífen, hífen global. E então a ferramenta que estou instalando se chama dotnet high F e E f. Então, uma vez que eu faço isso, você pode ver que eu já a tenho instalada. Então, meu dotnet CLI já tem isso instalado, mas o seu provavelmente seguirá em frente e realmente obterá todas as bibliotecas de suporte para essa ferramenta. Feito isso, no entanto, agora podemos prosseguir com nossas operações de andaimes dotnet EF. Portanto, podemos dizer dotnet EF BB context. Tudo bem? E então dizemos andaime. Um andaime significa que estou vendo o que existe e depois fui modelá-lo no aplicativo. E então, para confundir, o que eu preciso é a string de conexão. Então, vou copiar essa mesma string de conexão que acabamos de colocar nas configurações do aplicativo, esse arquivo JSON. E eu vou colar aqui. Tudo bem, bonito e simples, mas nós já o escrevemos. E espero que já esteja correto, certo? Depois disso, veremos qual driver ou tipo de banco de dados. Então, eu tenho que especificar o tipo de banco de dados por meio da biblioteca, do mar e da Microsoft, exceto Entity Framework, Core dot SQL Server. E não tenha medo de copiar e colar, pois isso é muita digitação. Mesmo assim, você pode voltar para o arquivo de brocha do USCS, copiá-lo e depois colar É o que o torna mais eficiente. Em seguida, vou especificar que quero que isso seja enviado para um diretório chamado data. Tudo bem, então eu posso ver o hífen 0. Em seguida, indique o nome da pasta que é data. Então, mais uma vez, isso significa que dotnet EFL gostaria de entrar em conflito com o contexto do banco de dados. Onde quer que esse banco de dados esteja, vá para esse banco de dados. É isso que eu quero construir. Esse contexto de banco de dados está desativado. Estamos usando um servidor SQL. E quando estiver pronto para gerar seus arquivos, envie-os para uma pasta chamada data. Eu posso pressionar Enter. E então, quando eu pressionar Enter, vamos ver algo que parece bom ou algo que parece ruim. Um bom é sempre bom. Então, aqui vemos que recebemos um erro porque ele falhou ao fazer o login com o usuário. Então, as respostas de que o login falhou para esse usuário, e eu, você provavelmente não teve essa experiência. Mas isso é porque eu uso as aspas duplas aqui. Deixe-me alterá-los para aspas simples. Tudo bem, observe, observe a diferença. Por causa da minha escolha de senha, eu tenho os cifrões. Então, quando estou usando aspas duplas, os cifrões estão sendo codificados para mostrar que não estão sendo vistos como cadeias de caracteres literais. Quando eu uso aspas simples, tudo está em uma cor. Então, essas são pequenas pepitas que você descobre por tentativa e erro. Então, deixe-me pressionar Enter e tentar novamente. Dessa vez. Ok. Recebemos um pequeno aviso e diz que para proteger inflamações sensíveis em sua cadeia de conexão, você deve retirá-la do código-fonte. Está bem? Agora, se eu for até o meu Explorer, posso rolar para cima e ver uma nova pasta aqui chamada data. E quando eu expandi-lo, vou ver arquivos de classe que correspondem aos nomes das minhas tabelas. E eu vou ver esse arquivo chamado de arquivo de contexto do banco de dados. Agora, nesses contextos de banco de dados, estamos basicamente modelando ou banco de dados. Portanto, esse contexto de banco de dados é a personificação do nosso banco de dados. Nas versões anteriores ao dotnet Core e ao EF Core, poderíamos gerar esse diagrama, algo parecido com um diagrama de relacionamento de entidades ERD que realmente mostraria essas tabelas como elas estão no banco de dados encerrado na ausência do diagrama. E mesmo por trás do diagrama havia um arquivo chamado arquivo de contexto de banco de dados que se parece com isso. Portanto, neste arquivo de contexto de banco de dados, ele está descrevendo as diferentes partes da configuração que são necessárias. Vemos aqui onde ele é inicializado em conjuntos de dB. Portanto, cada linha de ajuste de dB representa a tabela. Portanto, o nome da tabela é students, mas o conjunto de banco de dados é baseado nos modelos. Os alunos pegaram todas as propriedades da tabela chamada estudantes e geraram uma classe que corresponde a ela. Portanto, as propriedades do banco de dados ou ID, nome, sobrenome e data de nascimento. Todos eles correspondem ao que está na definição do banco de dados. Tudo bem, então esse diagrama representa a versão do código do nosso banco de dados. Agora, uma coisa a observar é que veremos o mesmo erro ou aviso que recebemos na CLI logo acima da string de conexão. Agora, essa é a mesma coordenação e fluxo que usamos aqui no comando, assim como já a temos na perturbação. Eu realmente não quero codificar. Então, o que vou fazer é executar outro comando para gerar a CLI. Gerei esse diagrama ou esse contexto, em vez disso, deixe-me fazer um CLS. Fui apenas pressionar e recuperar a última vez que estivemos na única neve. Todas as coisas a serem anotadas aqui. Primeiro, eu já tenho arquivos. Se eu tentar executar esse comando, novamente, receberei um erro porque verá os arquivos que estou tentando gerar já existem. Agora, isso pode ser um problema quando você realmente gosta de fazer alterações, então o banco de dados muda, então você quer que o código reflita que você precisará executar esse comando novamente. Então, agora eles estão dizendo que precisamos usar o sinalizador de força para sobrescrever os arquivos. Isso significa que no comando SAM, eu preciso adicionar hífen, certo? Ou hífen, força do hífen. Isso significa que qualquer coisa, mesmo que já esteja lá, eu quero uma substituição. A próxima coisa que queremos inserir é um comando que diz para você não incluí-lo na configuração ou na seção de configuração. Não precisamos desse sexo com a cadeia de conexão. Então eu posso ver hífen, hífen, hífen configurando, sei configurar, certo? Quando pressiono Enter, recebo um erro. E isso porque isso é mais uma questão de configuração e peço desculpas , não de configuração. Vamos tentar isso de novo. Portanto, não é necessário configurar e depois está sendo construído e pronto. E se voltarmos aos valores de nossos contextos, veremos que não temos mais isso no método de configuração. Tudo bem, então temos um modelo criando o que não temos na configuração. Não precisamos dessa parte. É assim que, quando fizermos alterações em nosso banco de dados, teremos que executar esse comando. Ele funcionará e apenas regenerará todos os arquivos para nós a cada vez. Tudo bem? Agora, a última coisa é garantir que nosso aplicativo conheça o banco de dados, porque sim, os arquivos estão lá, mas ainda não há um conhecimento real do banco de dados e do aplicativo reais. Temos que acessar nosso program.cs E então temos que fazer o que chamamos de registro ou injeção ou distribuição de dependência. Portanto, precisamos registrar que esse banco de dados existe no aplicativo para que possamos usar o Entity Framework e acessá-lo. Então, primeiro, vou dizer que var con é igual a. E então eu vou entrar no nosso arquivo de configuração. Assim, posso ver a configuração e a configuração do Builder Dog no momento que o aplicativo ou a deficiência é inicializada. Ele procurará todas as configurações do aplicativo e todos os outros arquivos de configuração e simplesmente as inserirá nesse único objeto criará a configuração. E então ele tem um método que diz get connection string, nice and clean. E então tudo o que precisamos fazer é saber o nome da cadeia de conexão. Então, se você esqueceu o nome, tudo bem. Pule, pegue o nome, copie, volte e cole. Então, agora temos a cadeia de conexão. Precisamos realmente adicionar o contexto do banco de dados. Então, a startup, digamos, uma construtora de serviços. E dirá o contexto do AD B2B. E vamos colocá-lo no contexto do banco de dados. E vou revisar a cópia do nome e colá-la aqui. Então, estamos adicionando esse contexto de banco de dados, certo? Então temos que passar as opções. Então, q pontos, é apenas uma expressão Lambda. Se você não estiver familiarizado com expressões lambda, faremos muitas portas. Mas essa é uma expressão lambda. Em nenhum lugar dizemos usar o SQL Server. E aqui está a cadeia de conexão. Tudo bem, agora faltam algumas referências. Basta clicar nele e dizer Dutos de controle. Isso me permitirá adicionar essa declaração usando. Aí vamos nós. E aqui estão os dados terrestres novamente, e isso me permite adicionar essa declaração usando. E não, não há flechas. Então, basicamente, estamos vendo quando o aplicativo é inicializado, pegou a string de conexão. Em seguida, use a cadeia de conexão para inicializar uma conexão real com o banco de dados da qual esse contexto de banco de dados é um modelo. E aqui está a cadeia de conexão que você deve usar. Tudo bem, agora isso é o que chamamos de seção de opções. Então, isso é o que é transmitido para o nosso contexto de banco de dados quando vemos opções. Tudo bem? Então, estou apenas mostrando todas as pequenas partes móveis para que você possa apreciar como tudo se encaixa. Então, agora nós realmente criamos uma conexão entre nosso aplicativo e o SQL Server. Portanto, sempre que fizermos uma execução do dotnet a partir do no, ele realmente estabelecerá essa conexão quando o aplicativo estiver sendo inicializado. Agora, a próxima coisa que vamos querer fazer é começar a criar funcionalidades relacionadas à interação com o banco de dados. Porque temos aqui o que chamaremos de modelos do banco de dados, certo? E se quiséssemos começar a criar cursos, criar palestras, criar estudantes? Então, precisamos de controladores, precisamos de visualizações, precisamos de funcionalidades intermediárias para distribuir isso. Então, veremos como podemos começar com isso na próxima lição. 21. Visualizações e controladores de andaimes - parte 1: Nesta lição, vamos montar nosso controle e ver a palavra confuso. Já o usamos antes, e isso basicamente significa que estamos gerando código com base em algo, certo? Assim, conseguimos criar um andaime ou contexto de banco de dados gerando o contexto de banco de dados e os arquivos de classe, arquivos modelo com base em nossa estrutura de banco de dados. Nessa situação, vamos montar controladores de andaimes e visualizações com base em um desses modelos. Tudo bem, então lembre-se de que temos o controlador de visualização do modelo. Agora temos o modelo. Então, a pasta de dados, tudo nela representa os modelos. Então, esses arquivos de aula são modelos orais, cursos teóricos e estudantes, esses são nossos modelos. Esses representam os dados. Agora, precisamos de visualizações que nos permitam visualizar os dados e interagir com os dados, a interface do usuário relacionada ao modelo. E precisamos que o controlador controle o tráfego, as solicitações e qualquer lógica relacionada à manipulação dos dados e à exibição da visualização. Agora, para criá-los, temos a opção de criar manualmente um controlador, criar manualmente uma visualização e conectá-los. E acho que neste momento, especialmente se você for iniciante, é melhor mostrar o código gerado e explicar isso para você. E então você apreciará melhor o que é preciso para criá-lo do zero, certo? Portanto, o dotnet CLI nos permite estruturar todo o código que nos permitiria fazer operações básicas crud, criar, ler, atualizar, excluir, tudo bem. Portanto, visualizações, controladores e funcionalidades que nos permitem criar registros, ler registros, atualizar registros ou excluir registros com base em qualquer um desses modelos e no que ele representa no banco de dados. Então, chega do meu monólogo, vamos falar sobre isso. A primeira coisa que queremos fazer é instalar outra ferramenta, que é o gerador de código ASP NET. Então, vou reduzir o painel lateral e tornar minha CLI um pouco maior. E também faremos o CLS. Livre-se de todo o barulho. Aí vamos nós. Tudo bem, agora precisamos executar o comando que diz dotnet tool. Você já viu isso antes. Instalar. E vou ver que você pode dizer hífen, hífen global como fizemos da última vez ou hífen g. Tudo bem. Em seguida, foram instalados na ferramenta geradora de código de hífen dotnet.net, ASP, NET. Tudo bem, então vamos pressionar Enter e deixar isso funcionar. Ok, bem, o que funcionaria para você? Eu já o tenho instalado, tudo bem, então, como está instalado, estou recebendo esse erro. No entanto, você realmente teria uma experiência muito semelhante à de quando instalamos o dotnet EF2. Tudo bem. Agora que temos isso instalado, precisamos executar um comando que nos permita montar o controlador com base no modelo. E queremos estruturar as visões que nos ajudem a realizar operações coletivas. Antes de fazer isso, porém, precisamos de mais alguns pacotes, certo? Então, já tem o Entity Framework SQL Server. Já temos o Entity Framework. Desenho. O que precisamos saber do pacote dotnet add. E queremos que o Microsoft Visual Studio dot web dot co-gere esse design. Então esse é um múltiplo. Clique em pausar e certifique-se de escrevê-lo volta como você o vê na tela, certo? Então, dotnet add package, Microsoft Visual Studio dot web dot cogeração que projetou. Este pacote, na verdade, apoia a ambição de cogeração que nós, uma vez executada e bem-sucedida, faremos apenas CLS. E então o que podemos fazer depois de incluirmos isso é ir em frente e fazer nosso andaime. Se você estiver usando Mac OS X, Mac OS ou Linux, precisará executar esse comando onde você vê que o caminho de exportação é igual cifrão home, Slashdot, net, dotnet. Certo. Aí vamos nós. dot.NET ou full stop.net Ferramentas de corte dot.NET ou full stop.net e, em seguida, o caminho do cifrão de dois pontos. Tudo bem. Então, basicamente para OS, Mac OS e Linux, onde o cara da base está sentado no caminho aqui, e isso deveria ser o cifrão para casa, não a hashtag home. Peço desculpas. Então, isso está apenas dizendo que a página inicial do arquivo do projeto ou do arquivo program.cs está na raiz, certo? Portanto, as ferramentas dotnet devem apontar para a raiz do projeto. Portanto, se você estiver usando Mac OS ou Linux, precisará executar esse comando primeiro. Depois de executar esse comando, no entanto, a próxima parte é para todos que dirão que dotnet é geração de código B net dash, de quatro gerações. Aí vamos nós. Controlador. Certo? Agora estamos vendo dotnet e sabemos que esse é o nome da ferramenta porque acabamos de instalá-la. E queremos criar um controlador. Então, podemos colocar coisas como o nome. Então eu posso dizer o nome do hífen. E vamos começar com o controlador dos cursos. Queremos criar um controlador para as operações do nosso curso. Então, vou ver que o nome do hífen é contra, é curso, curso está certo. Claro, seu controlador, porque essa é a convenção de nomenclatura. Em seguida, podemos especificar o modelo. Então, posso dizer traço m. E qual modelo estamos usando? Bem, o modelo que estamos usando é claro, certo? Então, vemos um traço m e depois vemos o curso. Tudo bem? Em seguida, precisamos especificar o contexto dos dados ou o contexto dos dados. E eu não quero escrever tudo manualmente, então vou até lá, copiar o nome e colá-lo na linha de comando. Aí vamos nós. Então temos algumas outras coisas. Então, isso realmente gerará esse controlador, mas eu quero que ele vá para a pasta específica dos alertas de controle, certo? Então, vou ver o hífen, o caminho relativo da pasta do hífen é igual aos controladores. Bem, não há sinal igual. Peço desculpas, não vou dizer igual. Em seguida, podemos especificar as coisas que queremos usar no layout padrão. E se quisermos referenciar bibliotecas de scripts , a combinação de todas essas coisas gerará o controlador com esse nome usando esse modelo e esse contexto de dados. E isso abrirá os controladores nessa pasta. Mas então estamos vendo usar o layout padrão, o que significa que as visualizações geradas junto com um controlador assumirão essa opção em que só queríamos usar o arquivo de layout padrão. Tudo bem, também poderíamos ter outras opções. Então, essas outras opções você normalmente verá na interface do usuário quando estiver usando o Visual Studio. Então, aqui podemos ver bibliotecas de scripts de referência. Deixe-me desmaiar disso. Referencie bibliotecas de scripts e então podemos dizer como false. Tudo bem, essas são outras opções que podemos analisar. Se você quiser ver todas as suas opções, é claro, você sempre pode dizer dotnet, ASP, NET, hífen, traço H de cogeração ou Control H e ver todas as suas opções. No entanto, vamos prosseguir com isso. Vou pressionar Enter. Meu Deus, peço desculpas. Eu escrevi esse comando completamente incorretamente. Isso não deveria ser cogeração, deveria ser chamado de gerador. Tudo bem, esse é o carrinho. Então, deixe-me fazer um CLS primeiro e ler o comando novamente do zero. Então, gerador de código ASP NET. Aí vamos nós. Então, vamos pressionar Enter e deixá-lo funcionar novamente. Tudo bem, e em alguns segundos, ele teria construído nosso projeto e gerado algum código para nós. Então, vamos ver o que isso fez. Ele fez a construção, depois disse encontrar o controlador do gerador e está executando o controlador do gerador. Então é isso. Tudo bem. E então verá que ele descobrirá metadados do Entity Framework para o contexto e o modelo de banco de dados , chamados de curso. Em seguida, é adicionado o controlador à barra do controlador o nome do arquivo de barra do diretório. Tudo bem, e depois adicionou as visualizações. Então, veja aqui, ele foi adicionado para ver, indexar, excluir, detalhar, editar e criar. E então ele nos disse que o tempo de execução era de 18 s. Agora, se olharmos em nossa estrutura de arquivos , com certeza, veremos um novo controlador. Isso é um pouco menor. Tudo bem, então vemos que temos um novo controlador chamado curso. Claro que é controlador. E vemos aqui que ele está injetando o contexto do banco de dados. E não vou entrar em muitos detalhes agora, vou reverter e explicar tudo, mas só quero que demos uma olhada no que temos. Temos nossa página de índice, temos detalhes, ações ou outras. Há muitas opções de detalhes. Temos nossa ação de criação para criar ações, na verdade. Então, vamos explorar por que precisamos , temos a edição. Na verdade, temos duas edições. Mais uma vez, temos delete e temos outro Delete. Tudo bem? E então, se olharmos em nossa pasta de visualizações, veremos que temos uma nova pasta chamada cursos. Portanto, lembre-se de que, depois de ter esse controlador, você precisa da pasta de visualizações correspondente. E se o expandirmos, veremos arquivos de visualização que correspondem a cada uma das ações que obtivemos em nosso controlador. Então, antes de começarmos a explorar o código, vamos verificar se ele funciona. Então, vou fazer uma corrida com dotnet. Então, quando a página for carregada, navegaremos manualmente. Vamos corrigir tudo isso mais tarde, mas posso dizer apenas cursos de corte. E lembre-se de que ele sempre procurará primeiro a ação do índice. Então, quando eu faço isso e pressiono Enter, ele carrega nossa página de listagem. Então, aqui veríamos todos os cursos do sistema. Também podemos prosseguir com a criação de novos. Então, se eu clicar em Criar novo, eu chego a um formulário. Deixe-me adicionar um novo curso. Vamos ver o desenvolvimento de código aberto. Tudo bem. O código do curso é CS101, por exemplo. E este é um curso de três créditos e nos permite criar e depois analisá-lo. Então, tudo isso não é dinâmico. Eu não escrevi nada desse código 12, você sabe que qualquer coisa que é exibida em uma página HTML precisa ser escrita estaticamente ou está sendo carregada dinamicamente. Então, isso está vindo diretamente do banco de dados agora, certo? Se formos editar, veremos que compramos a inflamação. Se eu dissesse ok, isso é mais como um curso de dois créditos e um curso de três créditos. Eu posso economizar. Lá, ele é editado. Eu posso ver os detalhes disso. E isso é basicamente o que queremos dizer com uma multidão, certo? Então, isso é ler isso. Não podemos detalhar é lê-lo. Podemos editar e também podemos excluir. Então, se eu disser excluir, excluir, vamos lá. Então, aqui mesmo, acabamos de gerar a funcionalidade coletiva com um único comando no r.net CLI. Então, quando voltarmos, vamos detalhar o código e ver exatamente o que obtivemos desse exercício de andaime. 22. Entenda o controlador com andaimes: Bem vindos de volta, pessoal. Nesta lição, exploraremos nosso controlador de cursos e queremos apenas dedicar nosso tempo e entender o que o código está fazendo. Então, eu colapsei meu terminal e vou entrar em colapso e desmoronar no Explorer à medida que exploramos o código, certo? Então você pode ir em frente e abrir o Controlador de Cursos. Então, o que você verá depois de analisarmos todo o bloco usando o bloco, o namespace e o controlador público do curso de classe, que é herdado da classe base do controlador, que é bastante padrão. Vamos ver se temos essa injeção da dependência no banco de dados. Agora, deixe-me explicar o que isso significa quando digo injeção. Normalmente, quando você tem uma classe e quer um objeto da classe, você realmente vê algo parecido e eu simplesmente digito aqui. Você diria que o nome do objeto do tipo de dados é igual a uma nova instância desse tipo de dados. Então saiba que você tem o objeto, você pode começar a usá-lo. No entanto, isso pode causar problemas com base na natureza, especialmente para algo como uma conexão de banco de dados. Porque toda vez que você faz algo novo, na verdade une fortemente a classe e o objeto, certo? Portanto, não, eu acoplei fortemente o My Courses Controller ao contexto do banco de dados. Se eu mudar isso precisa ser, são contextos como esse. Por exemplo, está me dando um erro porque agora preciso fornecer certos parâmetros e como ser responsável por evitar esses parâmetros toda vez que uso esse objeto, invoco um objeto de desse tipo. Portanto, isso não é realmente sustentável e sustentável a longo prazo. Portanto, o conceito de injeção de dependência significa que eu posso ter a classe. Posso modificar essa classe quantas vezes eu precisar para me referir a contextos de banco de dados. Ele pode evoluir, pode precisar de mais parâmetros ou qualquer outra coisa. Mas, por mais que ele evolua, não preciso modificar todos os lugares em que estou fazendo referência a ele. Eu posso simplesmente injetá-lo no meu código. E em segundo plano, o aplicativo fará o que for necessário. Então isso é o que chamaremos de injeção de dependência. Tivemos que configurar a injeção de dependência ou configurar o contexto de banco de dados e prepará-lo para injeção de dependência quando criamos nosso contexto de banco de dados anteriormente. Então, se formos para program.cs, lembre-se de que colocamos essa linha aqui e ela diz adicionar serviços ao contêiner. O contêiner aqui, a retirada do contêiner do COI ou a inversão do controle, certo? Então, todo esse conceito de inversão de controle e injeção de dependência, esses dois andam de mãos dadas. Isso significa que estamos configurando o aplicativo para poder injetar o que chamaremos de dependências em qualquer lugar. Portanto, por mais que possamos modificar a classe real aqui, quando ela é injetada como uma dependência. O destinatário está recebendo uma aula, como neste caso, o controle de cursos não precisa se preocupar em alimentá-la com todas as suas dependências. Porque o contêiner do COI está cuidando de tudo isso. Tudo bem, é um conceito muito legal e leva a um código muito mais limpo e a uma manutenção muito mais eficiente a longo prazo. Portanto, esse contêiner de IoC totalmente embutido no asp.net Core . No passado, você não precisava de bibliotecas de terceiros. E algumas pessoas ainda recorrem a bibliotecas de terceiros, mas isso não é absolutamente necessário atualmente ao usar o dotnet Core. Então, depois de injetarmos nossa dependência, que neste caso são contextos RDB, e é uma dependência porque precisamos do contexto do banco de dados para conversar com o o contexto do banco de dados ou o objeto do tipo db context, neste caso, representa a conexão com o banco de dados. Então, quando clicamos na página do curso e ela carrega o índice, ele se conecta ao banco de dados, obtemos os dados e os exibimos. Então, isso nos leva à nossa próxima parte, que é a ação. Agora, o que está acontecendo na ação? Em primeiro lugar, estamos verificando se o curso é Table, quote unquote realmente existe no banco de dados, certo? Então, quando isso realmente existir no banco de dados, retornaremos a visualização com os dados. Isso está escrito em uma linha. Quero dizer, é um operador ternário. Então, se estiver em várias linhas, é na verdade uma declaração de uma linha. Então, isso pode causar alguma confusão. Claro, isso foi gerado para nós. Mas basicamente o que isso está fazendo é ver. E vou ler isso em um bloco de comentários e tentar escrevê-lo em pseudocódigo. Então, faz sentido. a tabela do banco de dados existir, certo? Então é isso que essa primeira linha faz. Se isso existir, queremos retornar a visualização. Ou, na verdade, deixe-me ver você que deseja executar uma consulta. Então, dizemos que os registros var em uma tabela seriam iguais à consulta. Então, nesse caso, nossa consulta é um peso de contextos, pontos, cursos e essa lista de ferramentas é sumidouro. Então, estamos usando um dialeto de C-sharp chamado link, certo? link aqui é o que o EF Core usa. Aí está a biblioteca para acessar o banco de dados, buscar os registros com base na consulta que ela pode gerar a partir da nossa declaração aqui diz basicamente, eu acabei de converter isso em uma instrução SQL que diz selecione uma estrela nesta tabela. No entanto, não precisamos escrevê-lo no código porque vinculamos o dialeto para traduzi-lo para nós. Então, aqui estamos basicamente vendo que me dá os registros na tabela. Vou esperar uma conexão com o banco de dados, pegar as tabelas e obter tudo na forma de uma lista. Agora, algumas palavras-chave que você notará são assíncronas. Vou esperar e fazer uma tarefa. Quando fazemos programação assíncrona, isso torna as consultas mais eficientes e as operações mais eficientes. E sintaticamente, só precisamos nos certificar de incluir essas declarações à medida que avançamos. Vou explicá-los assim que aparecerem. Mas eu não quero me especializar nisso agora. Tudo bem. Então, estamos pegando os registros da tabela e depois sabemos que temos os registros. Vamos retornar a visualização em que você viu esse nome antes e onde ele foi exibido com os dados provenientes do banco de dados. Então é isso que essas duas linhas estão fazendo, basicamente. Tudo bem? Se a tabela existe, essa é essa parte. Tudo bem? E então eu ligo nenhum operador, o ponto de interrogação. E então, o que devemos fazer, basicamente dizemos retornar a visualização com esses dados. No entanto, tudo o que fiz aqui foi dividir isso em duas linhas, obter os dados e retorná-los para visualização. Então é praticamente a mesma coisa, certo? Acho que esse formato pode ser um pouco melhor a longo prazo, mas se você gostar aqui, tudo bem. Então, se isso não for avaliado como verdadeiro, faremos outra declaração de retorno que retornaremos esse problema. vendo que algo está errado com o banco de dados, certo? O problema é apenas um objeto especial que nos permite ver que houve um erro. Sempre que houver um erro, podemos retornar o problema e o aplicativo o exibirá adequadamente. Então, aqui está dizendo que a entidade situada no contexto do banco de dados de gestão escolar não foi configurada corretamente. Não é, não existe ou, você sabe, algo está errado, não é encontrá-lo. Então é isso que essa linha. Então, deixe-me deixar isso, esse comentário. Talvez isso ajude você a dissecar melhor essa única linha de código. Então, isso resume o que acontece quando carregamos nossa página de índice. Tudo bem, quando analisarmos as visualizações, você verá como vinculamos os dados do back-end ao front-end. Mas isso é o que eu quis dizer com a mágica que o controlador faz antes de desligar o View. Request Gaming foi para o banco de dados, obteve nossos dados e retornamos a visualização, quais foram os dados. Agora, se continuarmos com os detalhes, há mais algumas coisas acontecendo dentro dos detalhes. Quando tentamos carregar os detalhes, você verá que ele está tentando ou espera ver um valor de id. Então, é assim que as raízes ficarão. barra de detalhes dos cursos e o valor do id. E esse valor de ID entra em uma variável de parâmetro que estamos chamando de id, certo? A primeira coisa que fazemos é garantir que esse ID não seja nulo. Então, diz se o ID é nulo ou a tabela do banco de dados se depara com o mesmo problema que tivemos aqui. Não existe, então retornamos. Não é divertido, não para eles é a mesma coisa que um fluoróforo. É por isso que quando você acessa sites e clica em certas coisas, pode ver quatro ou quatro porque ele não consegue encontrá-las. Bem, aqui está um exemplo ao vivo disso. Então, se isso acontecer, se nenhum deles for obtido, iremos para a seção de busca de cursos , onde vemos o banco de dados. Me dê os cursos de mesa e, em seguida, me dê o primeiro registro que corresponda ao ID que forneci. Então isso é o que chamaremos de expressão lambda. Já vimos isso antes, já fizemos isso antes. Tudo bem, mas ao escrever consultas, elas são úteis quando queremos especificar determinadas condições. Então, aqui estamos vendo, me dê o primeiro registro padrão de estrela, onde, e então começamos a expressão lambda com esse símbolo e, em seguida, essa seta. E então dizemos a coluna de pontos de Tolkien que estamos interessados em comparar se será igual, igual, menor que, maior que, maior que igual, etc., etc. Seja qual for o tipo de comparação, o valor que desejamos. Tudo bem, não, isso significa primeiro nosso padrão, porque primeiro significa que ele obterá o primeiro registro que corresponda à condição. Portanto, mesmo que veja vários, ele retornará o primeiro. Ou padrão significa que, se você não viu nada, retornou nulo. Tudo bem? É por isso que depois dirá se o curso foi nulo, então retorna não encontrado. Porque pode ser que eu tenha pedido, é claro com o ID 50. Quando não há curso com a ideia de 50. Então, se depois disso ele não conseguisse encontrá-lo, isso seria nulo. E se é sabido que não vemos encontrado. Depois de passar por tudo isso, no entanto, retornaremos a visualização com os dados, com o objeto, com o modelo ou um objeto fora do tipo de modelo. Então é isso que está acontecendo dentro dos detalhes. E da forma como está escrito, é um pouco mais simples do que a única frase aqui. Não preciso escrever nenhuma anotação aqui. Em seguida, entramos em Criar e você verá que cria clumsy in, aqui em cima. Tudo bem, então temos o Create, get, nosso F cria um post e operação GET geralmente é o que usamos para recuperar a inflamação. Então, aqui ele só vai voltar à visualização porque quando clicamos em Criar, ele retornará apenas a visualização, que é o formulário que nos permite criar. No entanto, quando clicamos em enviar no formulário, é recomendável enviar dados com uma solicitação de postagem. E é por isso que criamos a postagem. Então, temos o get created e temos o post criado. O postscript recebe uma anotação aqui que diz postagem HTTP. Também faz nossa validação de um token antifalsificação para garantir que não o façamos ou limitamos o número de envios que chegarão caso nosso corpo tenha força para enviar spam ou algo assim. Cada vez que os dados chegam, no máximo temos esse token, que é algo conhecido apenas pelo servidor. Então, o servidor sabe como validar esse token que vem do formulário. Se não pudermos validá-lo , ele rejeitará essa tentação. Tudo bem? Então, na lista de parâmetros vemos aqui que estamos fazendo uma ligação. O link aqui basicamente diz que estou interessado em campos com esses nomes que possam ter sido enviados neste objeto. Tudo bem, você pode estender essa lista. Tudo bem? Se o coro tivesse uma nova coluna e quiséssemos preenchê-la, poderíamos estender essa lista de acordo, de acordo com ela. E apenas adicionamos vírgula, o próximo nome do campo. Também poderíamos criar um modelo de visualização, mas não entraremos nisso neste momento. Mas você pode ler e dizer que para se proteger contra ataques de postagem excessiva, você pode especificar as propriedades para que você possa ler mais sobre o que está acontecendo nesse parâmetro. Mas basicamente estamos apenas dizendo que, quaisquer que sejam os dados enviados, estamos todos interessados nos dados com esses nomes. Então, alguém tentou enviar mais dados do que o necessário para esse formulário específico e, em seguida, esses campos adicionais seriam rejeitados automaticamente porque não atendem a essas condições de valor. Tudo bem. Em seguida, vamos ver se o estado dos modelos é válido. ponto do estado do modelo é válido. Praticamente. A validação é baseada em nossas próprias regras de validação , que podemos criar posteriormente. E as regras de validação que C-sharp está inferindo com base nos tipos de dados em uso. Então, aqui temos uma corda. A string não é anulável. Então, basicamente, diria que, Ei, eu estou esperando um valor aqui, mas neste é anulável. Então, se eu receber um objeto do tipo course, e isso acabar sendo nulo por qualquer motivo. E você verá aqui que existe uma espécie de galinha velha ou uma contingência para garantir que ela sempre tenha um valor. Mas vamos ver. Ele veio com um valor que é nulo, então essa validação veria automaticamente que não é válida porque estou esperando uma string e estou recebendo nula, não é válida. O que acontece quando não é válido? Isso vai ignorar isso porque foi avaliado como falso. E ele apenas retornará a visualização com o objeto que foi enviado. Tudo bem. É por isso que quando você envia um formulário e há um erro nele, sim. Na verdade, ele recarrega o formulário com os dados que você acabou de enviar. Então isso é tudo o que está acontecendo aqui. No entanto, se for válido, então vamos dizer banco de dados, estamos adicionando esse registro. Eu sei que você quer salvar a cadeia, então isso é o que realmente a coloca no banco de dados. E então redirecionamos para a ação com o índice de nomes. Então, leia Derek, o leilão é o motivo pelo qual ele voltará para a página do anúncio e mostrará um registro recém-criado que conhece o banco de dados. Então isso é tudo o que está acontecendo. Em vez do Creates. Se formos até o editor, veremos que é meio que, bem, é muito semelhante à página de é muito semelhante à detalhes porque está recebendo um valor de id e verificando se é um ID válido valor. Ele sai para encontrar o curso, embora essa consulta tenha sido escrita de forma um pouco diferente, mas está fazendo a mesma coisa. Encontre o curso por ID. E então, se for nulo, mostramos. Se não for nulo, mostramos a página. Na verdade, a página de edição terá um formato semelhante à página Criar, mas desta vez ela está realmente recebendo os dados. É por isso que, quando clicamos em Editar, vemos os dados na mesma forma de um decreto, mas na verdade obtemos os dados. Então, quando enviamos, você percebe que ele também se opôs. Ele faz a mesma validação do token antifalsificação. Pegamos e validamos o ID, bem como examinamos os campos que estão chegando. Tudo bem, então o mesmo conceito da postagem que acabamos de ver para o Create. Em seguida, fazemos mais algumas validações, nas quais dizemos, ok, certifique-se de que o ID que está chegando aqui no link corresponda ao ID que vem do formulário. Caso contrário, retorne um erro. Em seguida, dizemos que se o estado do modelo for válido, tentaremos atualizar o registro e salvar as alterações. Agora, há casos em que eu poderia ter usado o registro para atualizá-lo e você pode ter feito o mesmo. E então tentamos enviar, ou quando você está enviando, eu já o enviei. Então você está editando uma versão mais antiga. Então, isso causará o que chamaremos exceção de simultaneidade de banco de dados. Tudo bem? E se isso acontecer, então diz se o curso existe ou se, claro, não existe, então não retorne o telefone. Caso contrário, basta lançar a exceção porque não temos certeza de como lidar com isso, certo. Mas isso seria raro, mas acontece. Portanto, é bom ter essa contingência implementada. Depois de tudo isso, lemos Erich na página de índice, assim como na criação. Ao final disso, também retornamos a visualização com os dados, caso não sejam válidos. Tudo bem, então você começará a ver que o código é muito semelhante porque é um código dessa forma. Isso se chama reatribuir os detalhes e tudo o que acontece aqui é muito do que acontece aqui é semelhante ao que acontece com um Create. Tudo bem, então vamos para a exclusão. Então, estamos passando um ID para a exclusão. Ele fará a mesma coisa que os detalhes e a edição acabaram de fazer, onde verificar o id é encontrar o curso, verificar se é nulo, se não for tudo, obteremos uma página que nos mostra os detalhes do curso. Em seguida, havia um botão de exclusão. Se você se lembra do nosso teste, saiba que quando clicarmos nele, ele enviará uma postagem. Já sabemos disso, certo? E desta vez está apenas dizendo que está usando um nome de ação diferente, certo? Portanto, o método é diferente, mas se quisermos que ele navegue até um nome específico, podemos especificar essa anotação e dizer que você se identifica como exclusão, mesmo que seja chamado de exclusão confirmada. Tudo bem, ainda validamos o token antifalsificação. Então, desta vez, em que estamos verificando se o banco de dados existe, tudo bem. Nós vamos e pegamos o curso por identificação. E então, se pudéssemos encontrar o curso, tentamos removê-lo do banco de dados. Depois de removido, salvamos as alterações. E então, mais uma vez, lemos Erich para indexar. É por isso que, depois de cada vez que concluímos uma operação, ela sempre volta para a página do anúncio, porque cada operação, uma bem-sucedida, diremos redirecionar para a página de índice. O método final dentro desse controlador apenas verifica se o curso existe. E isso foi realmente usado apenas dentro da seção de edição, certo? Onde estamos vendo se não existe, então através de não encontrado. Portanto, essa é apenas outra maneira de ver se existe onde no banco de dados temos o método any. Então, contextos, tabela de pontos, pontos qualquer. E então podemos dizer qual é a condição que estamos verificando? Então, há algum registro que atenda a essa condição, que neste caso é ver onde o ID corresponde ao valor do id que estamos passando. E então obtemos o valor que seria verdadeiro até o nosso padrão, que seria nulo. Isso é basicamente o que acontece em nosso controlador. Agora foi uma turnê rápida e suja. Não vamos modificá-lo. Vamos deixar o código padronizado. E mais tarde começaremos a escrever nossa própria lógica personalizada. Mas, por enquanto, é bom entender o código padronizado e saber o que ele está fazendo. Quando voltarmos, daremos uma olhada nas visões correspondentes de cada uma dessas ações e apreciaremos como a vinculação acontece. 23. Entenda vistas com andaimes: Tudo bem, pessoal, então vamos progredir e começar a analisar nossas opiniões. Então, vou fechar todas as banheiras que não são absolutamente necessárias para essa atividade. Em seguida, vamos examinar a pasta de visualizações e depois procurar a pasta do curso. E então vamos começar com o índice. Então, farei isso na ordem em que provavelmente visitaríamos as páginas. E, claro, a visualização do índice é a primeira que aparece porque a ação do índice é a primeira ação chamada. E, se você se lembrar, a ação de índice realmente consultará o banco de dados e retornará esses dados para a exibição. Então, quando ele retorna esses dados para nosso índice de visualização, é aqui que toda a vinculação acontece. Então, vamos partir da linha um. A linha um estipula o modelo. Tudo bem? Então, at seno model é apenas uma palavra-chave que você verá no topo das visualizações que são vinculação de dados, certo? Em seguida, o tipo de dados é especificado. Então, aqui está dizendo que o tipo de dados em que essa visualização é uma ferramenta integrada é inumerável, que é um tipo de coleção, o que faz sentido, pois estamos passando por cima de uma lista de objetos. Então essa é a nossa coleção, certo? Claro, objetos. Então é isso que está esperando. Agora que ele sabe que deve se vincular a esse modelo, agora podemos acessar as diferentes partes. Temos a seção de visualização regular de dados. Já vimos isso antes. Temos uma tag H1 aqui que diz índice. Temos uma tag p que hospeda uma tag âncora que nos permite navegar até a ação de criação, certo? Então, observe aqui que é apenas ação. Anteriormente, quando estávamos vendo a pequena página que você verá que controlador ASP é igual a e você teria visto ação e controlador em pares. No entanto, quando não especificamos o controlador, isso pressupõe automaticamente que ele está procurando o leilão no mesmo controlador vem a visualização atual. Portanto, o índice de visualização atual vem do controlador do curso. Portanto, ele assumirá que deve ir para a ação de criação no mesmo controlador. Tudo bem, então vamos ver uma mesa. Então, lembre-se de que vimos a lista de registros. E então, nesta tabela, temos alguns métodos auxiliares. E este é chamado de nome de exibição para. Tudo bem, então esse é um método de extensão HTML que basicamente examinará o nome da propriedade na classe do modelo, certo? Então você percebe que ele está usando uma expressão lambda. E parecia modelo daquele joelho, modelo de código de pontos, créditos de pontos modelo. E sabe disso por causa do modelo que foi especificado. Então, se eu mudar esse tipo de modelo apenas para ser provocativo por um tempo, se eu mudar para estudante, observe que isso começa a acender porque nenhuma dessas propriedades pertence a esse tipo de dados de modelo. Portanto, é muito, muito sensível, é muito fortemente digitado e muito sensível ao tipo de dados que eles estão usando aqui versus às propriedades que você está acessando. Eu reverto. Você verá que as luzes se apagarão. O que estamos fazendo aqui é especificar para a tabela. O cabeçalho. A primeira linha deve ter colunas de cabeçalho de tabela que especificam um nome chamado e créditos. Então temos um th em branco e veremos por que esse está em branco. Em seguida, desceremos até o corpo. Então essa é a cabeça. Em nenhum lugar no corpo da mesa. Para o corpo, estamos usando um laço de antebraço. E lembre-se de que sempre que quisermos C-Sharp no HTML, só precisamos de um sinal de arroba e, em seguida, podemos escrever nosso código C-Sharp. Então, aqui estamos vendo para cada item no modelo. Portanto, o modelo aqui é o objeto real que assume o tipo de dados especificado aqui. Observe a diferença, este está no modelo senoidal. Este é o modelo M maiúsculo. Tudo bem? Então, aqui estou dizendo, me dê cada item neste modelo ou neste objeto que é do tipo coleção, é claro objetos. Agora conhecemos esse loop. Então, a melhor maneira de analisar as coleções, certo? Então, percorra a coleção e, para cada uma que você encontrar, crie uma nova linha TR ou tabela e crie uma coluna que exiba o nome, uma coluna que exiba o código ou uma coluna que exibe os créditos. Na verdade, eu poderia simplesmente dizer ao assinar créditos de pontos, certo? Então, eu realmente nem preciso dizer que o que esses métodos auxiliares realmente nos ajudam é a forma como são exibidos, porque às vezes você quer uma tela especial como uma caixa de seleção. Se for um booleano, isso gerará uma caixa de seleção. Se digitarmos manualmente, ele realmente imprimirá a palavra verdadeiro, certo? É por isso que gostaríamos de usar isso às vezes. Quando queríamos realmente exibir dinamicamente um controle apropriado ao tipo de dados da propriedade. Então, estou apenas mostrando as opções, certo? Portanto, para esses valores numéricos e de string, provavelmente não precisamos de considerações especiais. Na verdade, poderíamos dizer, eu diria modelo de pontos do item manualmente. Mas então, para Boolean e alguns outros, você provavelmente gostaria de permitir eles gerassem isso para você. Então temos o td que corresponde ao MTT H, e esse tem as ações. Portanto, temos um botão de opção para editar um botão de ação para obter detalhes de um botão de ação para excluir. Percebo que todos eles escreverão as ações apropriadas. Tudo bem, mas eles também estão passando, ou seja, o valor do ID do traço raiz do traço P, que é o ID do ponto do item. Então, qual é a relevância disso? Lembre-se de que, no controlador para, vamos ver o método de edição. Se analisarmos o método de edição, obtido pelo EDI, estamos esperando esse ID. Isso significa que qualquer link que chamará esse método de edição precisa passar esse ID. É por isso que temos que dizer SP dutch root dash ID. Porque, mais uma vez, é uma identificação. Se eles dissessem cachorrinho , teríamos que ver ASP dash, dash puppy. É assim que funciona. Portanto, a vinculação acontecerá automaticamente. E então o valor que estamos transferindo é o valor do id do item que está sendo processado nessa função específica. Tudo bem? E o mesmo acontece com detalhes e exclusão. E isso é tudo para a página de índice. Agora vamos dar uma olhada na página Criar porque ela está vazia. Então, queremos criar um registro. Essa é provavelmente a primeira coisa que queremos fazer. Agora, aqui temos um formulário. E é um conceito muito semelhante em que não, é fazer um modelo, mas observe que estamos especificando nosso modelo acima. Mas no controlador, na verdade não fornecemos nenhum dado, certo? Tudo o que fizemos foi retornar a visualização sem dados. Então, por que estamos especificando um modelo nesta página? Bem, porque é um fórum em que especificar que tipo de objetos queremos formar para preencher e especificar um modelo aqui em cima, podemos usar isso para definir o tom ou definir o contexto para o resto do formulário. Então, começamos pulando as partes padrão compreensíveis e indo direto para a guia do fórum. O formulário aqui retornará uma ação ASB igual a cria, é igual a notas. Isso significa que, quando o formulário for enviado, ele tentará ir para a criação e, por padrão, fará um envio de postagem, certo? É claro que você normalmente vê algo como método é igual a postagem. Tudo bem? Mas então isso está implícito. Portanto, não precisamos dizer isso. E sabe que, quando enviado, ele irá para o Create. E já vimos que temos que criar o get, e depois temos o post. Tudo bem? Então, depois de termos feito isso, depois de declararmos um formulário, há uma seção aqui que diz, devemos mostrar o resumo, o resumo da validação que útil quando isso é falso, se a validação falhar e retornarmos a visualização com os dados, esta seção realmente imprimirá quais campos estavam faltando, quais dados, certo? Por isso, é útil. Vamos dar uma olhada em alguns dos controles. Portanto, esse é um formulário de bootstrap padrão. Se você quiser saber mais sobre os formulários do Bootstrap, você sempre pode verificar a documentação e ver como eles recomendam que você crie seus formulários. Então, a parte principal aqui temos o rótulo e notamos que isso é ASP para o nome. Qual é o nome dele? O nome vem do modelo. Então, isso é ASP ou o rótulo para a propriedade de nome do modelo que foi especificado, que é a semelhança de curso para as entradas, temos o ASP para Nim, que significa que, qualquer valor que você insere aqui, ele será automaticamente vinculado à propriedade name do objeto. É claro que, quando enviamos , essa propriedade de nome vem aqui e podemos acessá-la por meio de nossos objetos. Então, isso é tudo que flui, certo? Eu sou basicamente esse o caso de todas as outras propriedades. Temos o osso de entrada para o código, temos o osso de entradas, dois créditos. Tudo bem. Agora, isso também gerará o melhor tipo de controle, controle HTML para o tipo de dados. Portanto, observe que não estamos especificando o tipo de entrada ou algo parecido. Estamos apenas vendo informações e ESP para o campo. Tudo bem, então, se tivermos um booleano, ele gerará automaticamente uma caixa de seleção. Isso é o quão poderosos esses ajudantes de HTML são quando lidamos com páginas de Ariza. Tudo bem? Em seguida, temos nosso botão de envio. Depois de clicado, mais uma vez, ele acionará um envio para ou o ASP realmente criará. E sabemos o que acontece depois disso. Então, uma vez feito isso, se for válido e tudo mais, recarregamos a página de índice. Agora, enquanto estava na próxima página comigo, cliquei em detalhes. Então, vamos ver a página de detalhes. Então lembre-se de que está no controlador. Os detalhes vão levar um documento de identidade. Tudo bem. Ele vai buscar o registro e depois retornar a visualização com esses dados. Ou a página de detalhes precisa saber qual é o tipo de dados esperado. Em seguida, ele fará o mesmo tipo de exibição, nome e exibição para cada uma das propriedades. É por isso que, na página de detalhes, você verá o nome da palavra e, em seguida o valor que esse nome tinha, o cordão de palavras e, em seguida, o valor que foi colocado no núcleo, a palavra créditos e o valor. que foi colocado em créditos. Então, isso é tudo o que os detalhes estão fazendo. Depois, no final, podemos optar por ir para a página de edição, onde ele especificará novamente o valor do ID da rota e passará o ID do ponto do modelo. Ou podemos voltar ao índice e as doses externas voltarem à lista. Agora, se escolhermos a Edição , o que nos depararemos? Recebemos um formulário que na verdade é idêntico ao nosso formulário Criar, certo? Na verdade, é a mesma forma, existem apenas algumas diferenças. Então, o modelo vai ser o mesmo. Mais uma vez, controlador. Quando tentamos editar, funcionou, deixe-me descobrir isso rapidamente. Quando tentamos editar, ele buscava o registro e depois retornava a visualização com esse registro. É por isso que, quando a página de edição é carregada, temos dados no formulário. Você também notará que temos uma entrada aqui na parte superior do formulário para o ID e está oculta. Por que isso? Bem, precisamos saber o id quando o formulário é enviado porque há verificações na postagem que garantem que o ID enviado ou o id que chega, o parâmetro aqui corresponde ao ID que foi enviado no formulário, certo? Então, aqui está a vinculação para ID e, claro, essa identificação. Tudo bem, então ela corresponde a isso. De um modo geral, você precisa do ID quando é capaz de fazer uma atualização. Porque quando o Entity Framework realmente carrega todas as atualizações, esse objeto precisa ter um valor de id para saber que deve fazer uma atualização e não uma inserção. Tudo bem, para uma inserção, realmente não precisamos da ID, então é seguro remover essa vinculação porque não devemos permitir que alguém possa enviar uma identificação quando estiver criando um registro. Então, eu poderia realmente deletar isso. Tudo bem, no entanto, para as edições, é absolutamente necessário porque o banco de dados precisa saber esse ID para que possa atender essa atualização quando recebermos a alteração. Tudo bem, dentro disso, todo o resto é praticamente o mesmo que vimos com a criação. Então, é claro que a ação é diferente porque ela vai para o Editar Post. E devido à vinculação e ao fato de os dados terem sido enviados, as tags de entrada terão automaticamente os dados que correspondem ao objeto que foi enviado durante a operação get. Tudo bem? Mas, fora isso, é praticamente a mesma forma que vimos para o Create. Em seguida, vamos para o Delete. Agora, a exclusão de páginas é bastante simples. Já sabemos quais são essas. Só vai tentar encontrar o registro exatamente como aconteceu com as edições e os detalhes. E então ele retornará a visualização com o registro. Não. Bem, estamos excluindo páginas perguntando Tem certeza? E, na verdade, está apenas mostrando os detalhes do registro que podemos excluir. Então, na verdade, é quase idêntico ao discurso detalhado. No entanto, há uma pequena formação aqui que nos permite vincular o ID do registro que está prestes a ser excluído. Em seguida, podemos clicar em Excluir para enviar o formulário, ou podemos aumentar a inclinação e voltar para a lista. Portanto, se optarmos por enviar o que acontece neste vale de Heidi transfere a carga útil de dados para nosso método de exclusão de postagem. Então, quando passamos para o método delete post, ele está recebendo esse ID. E então ele está realizando a operação de exclusão conforme o esperado e, em seguida, retorna ao índice. E isso é praticamente tudo o que nossos pontos de vista fazem. E vimos, fizemos um teste completo de rugosidade. Vemos que tudo está conectado, tudo funciona, todas as navegações funcionam entre as páginas e isso é muito importante. No entanto, precisamos da ferramenta de navegação, pelo menos da página de índice. Alguém é um idiota com o layout e já fizemos isso antes. Então, eu vou fazer isso de novo. Introduzimos a página sobre. Eu só vou copiar toda essa pasta. E então, desta vez, o controle do ASP será de cavalos. A ação do ASB é indexada. E então os textos que vamos ver aqui seriam cursos. Tudo bem, agora temos um novo item que, quando clicado, vai para a ação de índice da nossa página de cursos. Tudo bem, então você pode fazer essa modificação. Vá em frente e aperte dotnet run e apenas os pensamentos e deixe-me ver. Para um aldol, validamos que tudo funciona e vemos como tudo está conectado. Então, quando voltarmos, vamos repetir as atividades de andaime para nossos outros modelos em nosso banco de dados. 24. Visualizações e controladores de andaimes - parte 2: Tudo bem, pessoal, saibam que vemos como é fácil realmente gerar funcionalidades crud para suportar nossas tabelas de banco de dados. Vamos fazer isso pelos outros, certo? Então, nós já fizemos o curso. Vamos fazer a mesma coisa. Vou fazer o Control Shift e apóstrofo para lançar o terminal. Vou me livrar de certas coisas na tela, para ter mais imóveis. E então vamos repetir o comando que executamos anteriormente, que é o controlador gerador de código de hífen dotnet ASP NET. Podemos simplesmente fazer modificações aqui porque queremos o mesmo tipo de configuração. A única diferença agora é que não estamos lidando com cursos. Estamos lidando, digamos, com professores. E então o modelo aqui seria palestrante. E temos o CMD, todos os contextos são o mesmo relativo desmoronam. Todo o resto é praticamente o mesmo. Então, se eu fizer isso, pressione Enter e aguarde alguns segundos, então veremos que ele foi executado com sucesso, certo? Então, agora discutimos os controladores e as visualizações de nossa mesa de palestras. E eu vou fazer isso mais uma vez. E então você pode fazer isso para nossos alunos. Então, estudantes controladores e estudantes são o modelo. Pressione Enter. E aí vamos nós. Agora podemos voltar e ver que temos controladores e visualizações adicionais. Então, é claro, são boas palestras de estudantes. E em nossa pasta de visualizações, temos cursos, temos palestras completas na web, compartilhamos e temos alunos que escrevem. O código é praticamente o mesmo. Então, a única grande diferença que você pode esperar ver aqui é que, em vez de ver o nome de uma tabela, você verá outro nome de tabela, certo? Você verá a mesma injeção do contexto do banco de dados, o mesmo tipo de código padronizado, exceto que está procurando palestras em vez de estudantes, está procurando cursos em vez de professores, etc. Então tudo é relativo ao controlador real e ao modelo que foi usado. Agora, se eu quiser navegar até cada um deles, siga o exemplo e me certifique de colocá-lo para ter a navegação do curso. Vou duplicar isso duas vezes. E eu vou colocar uma navegação para os professores. Portanto, este deve ir para a ação de indexação do controlador do palestrante. E então, aqui embaixo, faremos isso para estudantes. E é isso mesmo. Vamos executar o dotnet e testar nosso aplicativo. Tudo bem, então, quando nosso aplicativo for lançado, veremos que temos todas as propriedades de navegação. Então, se eu clicar em cursos, já validamos os cursos. Podemos criar um novo curso, especificar um nome. Então, introdução ao desenvolvimento web. Podemos dar a ele um código CS101, e esse é um curso de três créditos. E então criamos, e então temos nosso primeiro curso no sistema, ou pelo menos neste momento, o segundo curso no sistema, certo? Ao clicar nesses botões de navegação, você também pode anotar a URL que é gerada ou Adicionar cursos, barra, editar barra, barra dois, essa é a nossa identificação. E então sabemos o que está acontecendo nos bastidores, por que estamos vendo os dados em cada uma dessas páginas. Se eu tentasse acessar os detalhes para obter um recorde de 20, então é aí que obtemos o valor de cem por erro. Tudo bem? Então esse é o padrão, o comportamento padrão pronto para uso. Tudo bem? Então, validamos que o curso já está lotado. Vamos validar a multidão de palestras para que eu possa criar a primeira palestra no sistema. E o nome dele é Troy para Williams. Agora observe que nossos rótulos aqui são literalmente parecidos com os rótulos que estão na classe, ali mesmo o nome das propriedades da classe. Então, mais tarde, vamos querer embelezar isso um pouco. Você não quer necessariamente a caixa de camelo ou a caixa Pascal aqui no nível da tela. Mas, por enquanto, isso é validar que funciona. Então, não estamos trabalhando. E, claro, tenho certeza de que você pode testá-lo. Limpo e detalhista. Mas vamos passar para os estudantes. E os estudantes e o sistema seriam, digamos, Tyrone Cooper. E então observe a Data de nascimento, que fazer com que um selecionador de data saiba automaticamente que eu vi que a tag de entrada inferirá o melhor tipo de controle com base no tipo de dados. Então, se eu pular para a página Criar para o aluno, você verá que não está dizendo que deveria ser um tipo de data. Ele está vendo apenas entradas para esse campo. Não. O ASP.Net Core, quando vai renderizar a página, sabe que é um campo de data. Portanto, ele está gerando automaticamente a tag de entrada com o tipo de data, datetime local. Então é isso que está acontecendo nos bastidores. Tudo bem? Agora, se eu não fornecer um valor necessário, você percebe que a validação está surgindo quase imediatamente. Se eu tentar clicar em Criar, não conseguirei ir a lugar nenhum até fornecer um valor, certo? Então, posso dizer Cooper mais uma vez. E então, quando eu criei, a data de nascimento era opcional. Assim, eu posso criar estudantes sem esse valor específico. Se eu tentar novamente e clicar em Criar, validação estará acesa e me informando que esses campos são obrigatórios. Então, esse tipo de validação completa está embutida. Podemos estender isso, mas, por enquanto, acho que isso é bom o suficiente para protegermos a integridade de nossos dados. E é o suficiente para começarmos a demonstrar esse software. Agora podemos ir para a escola para a qual estamos construindo o software e dizer: Ei, você sabe, isso é uma prova de conceito, me avise se isso está atendendo às suas necessidades. Então, quando voltarmos, vamos estender nosso aplicativo um pouco mais. 25. Adicionar ao GitHub: Tudo bem. Então, antes de prosseguirmos, faremos um check-in ou um compromisso. Portanto, é sempre uma boa prática que, ao atingir um marco, você se comprometa. Então, vou para a seção de gerenciamento de controle de origem e direi que foram adicionados bancos de dados e visualizações e controladores de andaimes. Essa é a mensagem da galinha. Então, podemos prosseguir e aqui você está vendo que eu tenho muitas informações e adicionei banco de dados, visualizações e controladores. Portanto, o banco de dados está nos controladores. Aí vamos nós. E então podemos nos comprometer e pressionar. Tudo bem, agora podemos passar para o embelezamento ou aplicação. 26. Personalizando visualizações e elementos - visão geral: Nesta lição, vamos nos concentrar em embelezar um pouco nosso aplicativo. E quando digo embelezamento, se pularmos para algumas de nossas páginas de andaime, veremos que, sim, está usando pouco o bootstrap, mas pode haver espaço para melhorias ou o botão Criar ou botão de edição. Esses botões, os botões axônicos, são apenas padrões. Então, o que gostaríamos de fazer é provavelmente entrar e embelezá-los um pouco e corrigir parte da formatação aqui, colocar algum espaço entre essas seções. E mesmo para a tabela aqui, essa é uma tabela padrão do Bootstrap, mas provavelmente podemos embelezá-la. Então, em toda essa seção, vamos nos concentrar em adicionar alguns elementos de design. Então, na próxima lição, o que faremos é adicionar um pouco de estilo Bootstrap às páginas e formatá-las um pouco para que possamos ter mais aparência de um usuário com aparência mais coesa interface. 27. Adicionando o estilo do Boostrap: Tudo bem, então vamos começar com alguns dos nossos botões na página do curso Vou mudar a aparência desses links. O legal do Bootstrap é que eu posso transformar uma tag âncora regular de link em um botão com bastante facilidade. Se eu pular, deixe-me fechar tudo o que for necessário e eu vou lidar com os cursos. Crie neve. Vamos começar com o índice. Desculpe. Tudo bem, está na página de índice. O que temos? Temos a tag H1 que diz índice. Index, tudo bem? É claro que estou mudando o índice de palavras dos cursos porque o índice de palavras significa muito menos para alguém do que avisar que está vendo a página com os cursos. Então, essas são pequenas coisas. Mas eu disse embelezamento. Então, para a tag âncora que nos permite navegar até o Create, o que posso fazer é adicionar algumas classes de Bootstrap. Se você quiser saber se a classe está novamente, você sempre pode acessar a documentação do Bootstrap e eles podem ver os botões. Mas eu conheço alguns deles de cor porque são muito consistentes e fáceis de usar. Então, primeiro que eu posso ver btn. A propósito, vamos transformar isso para que o link pareça ter desaparecido, certo? Então eu posso especificar que tipo de bunda e eu desejo a casa. Então, para nossas criações, talvez eu queira algo como botões verdes para poder dizer BTN, sucesso acelerado. E se você se lembrar da paleta de cores, o sucesso nos dará um botão verde. Tudo bem? E então eu posso até personalizar isso um pouco. Coloque um sinal positivo aí, empreende o que quer que seja. Depende de você na parte do texto, mas estou apenas mostrando como é fácil transformar link de aparência irregular em um belo elemento visual que parece um botão. E ainda funciona porque, se eu clicar nele, ainda iremos para essa página. Então, vamos fazer a mesma coisa com os detalhes e excluir. Agora, o legal é que podemos fazer isso uma vez porque eles estão sempre repetindo com base nisso da maneira certa. Então, eu não preciso fazer isso para cada disco, eu apenas repito uma vez. Então, aqui, mais é igual a btn. Isso é Edit vendido, provavelmente dá a isso um aviso de praia em holandês. Vou apenas escrevê-los que depois você possa examiná-los uma vez. Então, um aviso de traço BTN, este, vou dar um primário de BTN. Deixe-me diminuir um pouco. E então, para excluir, darei a este um BT e um perigo. Tudo bem, agora o que isso significa? Cada um deles representa uma cor na paleta do Bootstrap. Portanto, você não pode mais uma vez ver as cores, mas sempre será, desculpe, um aviso sempre será uma espécie de primárias de âmbar de corte REM, mas para nos dar aquele tom de azul e delete vai nos dar aquele vermelho. Tudo bem? E então eu posso pegar todos aqueles canos entre essas barras. Essas barras, eu posso tirá-las. E sim, isso parece muito melhor. Tudo bem, então não, todos os cursos que são criados. Então, se eu entrar aqui e disser que me dê um novo curso, vamos voltar ao desenvolvimento de código aberto. O código é CS1 ou dois, e os créditos serão dois créditos. E então eu clico em Criar, então você vê que eles têm essa consistência. Com toda a aparência dos botões, quanto mais botões entrarem, mais colorida e atraente essa interface de usuário começa a se tornar, certo? Então, isso é tudo para a página de índice, pelo menos por enquanto, certo? Você pode fazer suas próprias personalizações, pois acha que pode até usar cores diferentes das que estou usando aqui. Isso depende inteiramente de você e mantém sua visão dos cromossomos de aplicação. Vamos até a praia de criação. partir da criação, ele cria e tudo mais, é claro, e então temos as caixas de texto, certo? Então, vamos começar a criar. E o que vou fazer primeiro é mesclar essas ferramentas. Então, crie um curso e livre-se dessa idade para Todd, deixe o RH. E então, para as entradas, vou colocar um pouco de BR entre essas vermelhas. Eu não quero que eles fiquem tão próximos um do outro. Então, no formulário, estou apenas colocando essa ponte entre cada div de grupo de formulários. Ela é aquela div de grupo de formulário, depois BR, e depois div de grupo de formulários novamente, BR, etc. Agora, depois de fazer isso, o formulário parece um pouco mais espaço. Temos uma linha no topo que é óbvia. Crie um curso, certo? E então, para os botões, o que eu vou fazer é, então, o que acontece é que isso não é um grupo de formulários. Esse é o botão Criar. É fácil usar o BTN primário. E depois, de volta à Lista, há uma tag âncora por si só. Então, na verdade, vou pegar essa tag de âncora, colocá-la no mesmo grupo de formulários e depois dar uma aula. E vamos chamá-lo de btn, btn dash, dark. Tudo bem, então agora, quando eu olho para trás, olhe para isso. Então não, eu posso criar um curso, preencher o formulário, tudo bem, e então eu posso criar ou posso voltar para a Lista. Então, para mim, parece um pouco mais limpo para este formulário. Tudo bem, e se eu clicar em voltar para a lista, ele simplesmente volta para o formulário de edição é muito semelhante ao formulário de criação, certo? Então, acho que podemos fazer o mesmo tipo de modificação aqui. Então, vou copiar essa modificação da tag âncora e ir até Editar. Vou remover esse porque eles vão para o mesmo espaço de qualquer maneira, o mesmo URL. Então, a mesma âncora. Voltando a listar este, vou fazer um vou fazer aviso de btn e vou dizer Salvar alterações. Então esse é o texto do botão que eu quero no formulário de edição. E eu quero que você saiba que quando você é um parafuso para fazer isso, quanto mais curto, é isso que você quer fazer. Então, estou fazendo esse aviso e temos mesmo botão preto que volta para o LR. E então, para o formulário em si, preciso editar aqui. Então, isso vai dizer Editar curso em uma linha. E podemos adicionar algumas etiquetas de quebra. Isso é o que acontece quando você perde um clique. Então, vamos adicionar algumas tags BR entre as seções do nosso grupo de formulários. Tudo bem, agora, depois de fazer tudo isso, vamos lá. Editar curso, chamado assim, mais um antes da seção do botão. Ok, lá vamos nós. Tudo bem. Agora você sabe que, se salvar as alterações, certifique-se de que é isso que você quer fazer e podemos voltar a isso. Tudo bem, parece bom até agora. Então, vamos voltar para a Lista e, em seguida, vamos fazer o discurso de todos os detalhes na página de detalhes, a interpretação de como você deseja que os detalhes apareçam. Isso é mais uma novidade. Na verdade, vou me concentrar apenas no layout aqui. Então, vou dizer Detalhes do curso no topo. E podemos remover isso para o, então isso é o que chamaremos de tabela de dados em HTML. E você tem basicamente um d t, e o d, ou d d, certo? Então, lista de dados e, em seguida, você tem as linhas de dados e as colunas de dados. Praticamente. Isso seria o que é o rótulo e , em seguida, esses seriam os dados reais. Se você quiser modificar isso, você pode. Sua interpretação disso, é claro, é relativa a como você se sente em relação a esta página. Não vou modificar o layout em si. O que vou fazer é focar nos dois botões que vemos aqui e que temos. Eddy, devolva a lista. Então, vou reutilizar as aulas que temos. Aviso de traço Btn, btn, se você quiser ir até o final. E para buck listar btn, btn dash dark. Tudo bem, e isso removerá o cano entre eles. E então esses são os detalhes. Então, eu não estou disposto a fazer muita coisa aqui. Se voltarmos à Lista, poderemos fazer mais com a exclusão. Excluir nos mostrará algo como a confirmação, a página de detalhes, desculpe. E então confirmamos ou excluímos ou voltamos à lista. Não vou modificar a página de exclusão porque, posteriormente, vamos modificar a funcionalidade de exclusão de forma que, quando uma pessoa clica em excluir daqui, nós a avisemos. Você tem certeza? E então, se eles confirmarem, seguiremos em frente e faremos isso. Então, aquele salto duplo em que você vê e depois exclui, eu vou removê-lo. Portanto, não vou gastar energia modificando esta página. Mas não, acho que temos uma aparência melhor em nosso site, é mais colorido. E essas cores, é claro, contam uma história. A cor é informada ao usuário sobre o que ele pode estar fazendo ao escolher essa opção específica. Se você quiser outras cores, é claro, você pode conferir os paletes de bootstrap, ver quais outras cores existem e quais estudiosos são fáceis de usar e usá-las ou personalizá-las com base em suas preferências ou necessidades de marca? Não. Enquanto isso, eu encorajaria você a seguir em frente e fazer a mesma eutrofização para professores e estudantes que acabamos de fazer juntos em cursos. Meu desafio para você é adicionar seus próprios elementos de estilo aos professores e alunos com base em nossas opiniões. Agora, na próxima lição, o que vamos fazer é implementar essa funcionalidade de exclusão mais dinâmica. E eu vou te ver então. 28. Excluir usando o jQuery: Bem vindos de volta, pessoal. Nesta lição, implementaremos uma operação de exclusão mais dinâmica. Agora, a realidade é que, para a exclusão, não precisamos necessariamente excluir e depois ir para outra página. outro lado, mesmo que seja uma boa medida garantir que tenhamos certeza de que ambos excluímos o registro do carrinho. Mas o que queremos fazer é permitir que o usuário confirme aqui mesmo. E depois que eles confirmam, prosseguimos e excluímos em segundo plano e recarregamos a página. Tudo bem, então o que vamos fazer é implementar uma tela de confirmação. Vou usar essa biblioteca chamada alertas de suítes. O alerta de assentos é uma biblioteca muito útil que nos permite criar lindos prompts que, na verdade, têm uma amostra. E vou direto para a amostra que vamos usar, que é um diálogo confirmado com um botão de confirmação. Então, quando dizemos Experimente-me, você o verá aparecer e ele apenas pergunta: Tem certeza de que não conseguirá reverter isso? Obviamente, podemos personalizar as mensagens que aparecerem. E então podemos permitir que o usuário confirme a exclusão ou cancele o que estava prestes a fazer. Então aqui está o código de exemplo que precisamos, certo? Então, vamos começar com a instalação. Então, vou direto para a página de instalação e eles nos descreverão como instalá-lo. Podemos usar o npm, mas não vamos usar o npm. Vamos usar apenas o link CDN que eles nos ofereceram. Uma CDN é basicamente uma versão hospedada do arquivo de script ou dos ativos que você precisaria para usar a biblioteca, certo? Então, podemos usar um CDN. Caso contrário, poderíamos realmente pegar os ativos reais, os arquivos J, S e assim por diante, e colocá-los no projeto. Mas, como eu disse, usaremos apenas o CDN. Então, quando copiarmos isso, voltaremos ao nosso Visual Studio. Código. Projetos que não divididos nas visualizações vão para o layout. E vamos colocar o link da CDN aqui mesmo no layout. Vou colocá-lo depois do jQuery porque depende do jQuery. Portanto, a ordem é importante. Tem que vir depois do jQuery. Tudo bem? Então jQuery, depois isso e depois os outros arquivos de script que temos. Tudo bem. Então, depois de incluí-lo, basta copiar e colar, porque esse URL realmente renderá. Deixe-me mostrar que isso realmente nos trará aos olhos, está aí. Esse é o arquivo de script que sempre será referenciado quando o CDN estiver lá. Não, podemos usar a amostra em nossos sites. Então, estou disposto a emprestar esse código. Eu vou pular de volta e começar com cavalos, certo? Página de índice. Agora, existem várias maneiras de fazer com que o script Java em R seja feito no aplicativo principal, certo? Podemos escrever o JavaScript aqui mesmo no layout. Nesse ponto, é mais global porque, é claro , a página de layout é para cada página, mas não queremos necessariamente que o JavaScript acionado ou esteja disponível em todas as páginas. Então, quando queremos que ele esteja disponível em todas as páginas, nós o colocamos aqui globalmente, certo? Se estamos prontos para criar nossa própria seção de scripts ou se estamos fazendo referência a um arquivo de script inteiro. Podemos fazer isso globalmente nesta seção. Mas você também notará que, por baixo de tudo isso, temos essa coisa chamada seção de renderização. E essa seção será chamada de scripts. Agora, o que isso significa? Isso significa que, em qualquer visualização que eu queira que um código ou script JavaScript específico execute, posso invocar a presença dessa seção nessa visualização específica e escrever o código JavaScript específico para essa visualização. . Por exemplo, se eu quiser apenas que meu doce alerta esteja disponível na página de índice dos cursos. Sim, o link do CDN é, ou todo o arquivo de script está disponível globalmente, mas estou invocando sua funcionalidade somente nesta visualização. Posso criar essa seção no final do arquivo. Eu costumo colocá-lo no final do arquivo, mas ele será gerado dinamicamente com fenda. Ou dizemos que eu seria a seção de ciências. E então chamamos o sexual pelo nome, que, lembre-se, é chamado de scripts. Isso sempre vê aqui os roteiros, certo? Então eu posso invocá-lo pelo nome. E aí eu posso colocar minha tag de script e começar a escrever os JavaScripts que pretendo executar nesta seção. Tudo bem, então vou primeiro criar uma seção inteira do jQuery. Nós invocamos a função. E então eu vou ver aquele impuro. Então, quando esse botão de exclusão é clicado, é isso que eu realmente queria. Como vou identificar esses botões de necessidade? Então, se você quiser uma atualização sobre JavaScript, novamente, confira meu curso de desenvolvimento web onde ele passa por JavaScript. Mas sempre que eu quero um elemento específico, preciso referenciá-lo por alguma forma de nome ou alguma classe que eu acho que vou dar a ele outra classe. Vou chamá-lo de deep btn. Então essa é minha aula. Não servirá ao propósito de lhe dar nenhum estilo. Estou apenas dando a ela um nome de classe, certo? Então eu vou dizer que quando esse botão é clicado, então o cifrão e eu vou usar apenas jQuery, é claro , não, aspas, mas excluir btn, certo, diz obter o elemento que tem a cruz exclua btn. E então fui me registrar, cliquei em eventos. Então, onClick, quero acionar essa função e usarei E para o argumento do evento. Tudo bem, então um objeto jQuery muito grande. E então, dentro disso, somos mais nossa função. E, dentro disso, estamos observando os eventos de clique em qualquer elemento que tenha a classe delete btn, que no nosso caso é nosso botão Excluir real. Quando isso acontece, não, posso colar aquele código de amostra que acabamos de retirar do site da Swell e formatá-lo para que pareça um pouco mais sensato. Tudo bem. Então, basicamente, deixe-me ir. Praticamente. Estamos vendo que, quando clicado, dispare esses alertas de venda, certo? Título. Tem certeza de que não conseguirá reverter isso? E é um ícone de aviso. Em seguida, mostramos o botão Cancelar. Em seguida, podemos definir a cor de confirmação e a cor do botão de cancelamento. Vemos que eles estão voltando para o hexadecimal aqui, mas tudo bem. E então você pode dizer sim, excluí-lo. E então, se eles confirmarem, então observe que não, é o primeiro a disparar essa parte, esse é o aviso. Em seguida, diz “ avalie os resultados”. Os resultados seriam o que eles clicassem em cancelar nossa confirmação. Não. Eles dirão se for confirmado, se o resultado for confirmado, que significa que você clicou no botão Confirmar, o que fazemos? Tudo bem, então o que faremos terá partes diferentes. O que queremos fazer é realmente iniciar a exclusão. Sim, podemos mostrar a confirmação, mas na verdade também queremos iniciar a operação de exclusão no back-end. Então, para esse tipo de operação, o que eu costumo fazer é criar um formulário porque já temos a funcionalidade, certo? Já temos a funcionalidade em nossos, estamos em cursos. Então, deixe-me analisar isso, é claro, é controlado e mostrar o que isso significa. Já temos a funcionalidade em que aceitamos o id, certo? E então repassamos o texto necessário, e então ele lerá Erich para indexar. Então, eu realmente não preciso escrever nada muito especial. Em vez disso, o que vou fazer é criar um formulário semelhante ao formulário real que está aqui no método delete. Tudo bem, então vou copiar isso, mas preciso de tudo nele. Basta copiá-lo. Eu não preciso de um dinheirinho para listar. Eu nem preciso de um botão de envio porque quero usar um jQuery para fazer o envio em meu nome. Tudo bem, mas é aqui que as coisas ficam excitantes. Tudo bem? Portanto, temos nossa opção ASB Excluir. E então temos essa entrada que tem uma vinculação para ID. Agora, estou recebendo todos esses erros não está aqui porque está dizendo que o curso Eye Inumerable não contém uma definição de ID, certo? O olho inumerável aqui em cima, que é uma coleção, não tem ID, é por isso que tivemos que fazer o forEach para chegar ao elemento ID. Então, alguns ajustes aqui. Primeiro, preciso transformar essa tag âncora em um botão, porque os botões enviam formulários, não tags âncora, certo? Se você examinar todos os formulários, notará que todos esses são entradas com tipos de carne ou etiquetas de botão reais. Então, vou apenas criar o novo elemento em vez de destruir o que está lá. Eu queria criar um novo. Então eu vou dizer botão. Vamos dar a ele um atributo de dados. Essa é uma maneira interessante de permitir que ele realmente atribua um valor a um elemento em HTML para que o valor que estou atribuindo seja qualquer valor que seja o ID do item. Tudo bem? Eu queria te dar a mesma aula porque é claro que precisa ser o botão Excluir. Então, como eu tenho isso como botão Excluir, vou removê-lo da tag âncora. E então eu vou dizer que seu tipo é igual ao botão. Portanto, ainda não está tentando enviar nenhum formulário. É só para sentar e ouvir, certo? E então podemos simplesmente dizer botão Excluir, texto. Tudo bem. Vou apenas sinalizar este. Exclua o antigo para que não percamos o clique. Agora temos um botão que tem a classe delete btn. E isso vai disparar nosso doce alerta. Sempre que for clicado, saiba quando é clicado. O que queremos fazer? Queremos pegar o valor do id daqui, conectá-lo ao formulário e, em seguida, enviar o formulário para que ele não possa, ir até o controlador e fazer o que ele teria feito naturalmente. Então, estamos basicamente cortando tudo com precisão. Estamos usando JavaScript para nos ajudar com esses atalhos. Tudo bem, então vamos primeiro modificar as entradas. Então, eu não quero que diga que é antes, em vez disso, eu tenho que dar uma identificação. Então, o que acontece é que o ASB, para eu acho que já o analisamos antes, configura automaticamente os atributos de ID e nome para o elemento que diz ser anterior. Tudo bem? Então, podemos realmente ignorar isso. Podemos colocá-los manualmente. Então eu posso ver que esse é o ID do curso. Esse é o nome ou ID do elemento. E então o nome aqui seria apenas Id. Tudo bem? Id, porque isso precisa corresponder ao parâmetro esperado aqui. Tudo bem? Então, agora o que podemos fazer é quando a pessoa confirma que está fazendo essa exclusão, certo? Posso dizer que foi excluído. Mas, de verdade, quero dizer que me dê o botão que foi clicado. Portanto, o botão var é igual a. E então, usando o cifrão, isso me dará o objeto que acionou o evento, que foi o botão que foi clicado. Então eu quero me dar o ID do botão. Então, vou dizer dados de pontos BTN e me dar o ID. Tudo bem? Então, sempre que você usa esses atributos de dados em seu HTML e deseja obter o que está nesses atributos de dados como valor. Então, em JavaScript, você sempre pode dizer obtenha os dados de pontos do elemento e , em seguida, a chave para esses dados. Portanto, o data dash ID torna a TI essa chave. Tudo bem, agora que tenho os dados do botão, vou ver o fogo sair do óleo antes que o fogo saia do formulário. Na verdade, preciso dar a isso o valor. Portanto, há várias etapas, mas vamos simplesmente percorrê-las para ter certeza de que estamos no caminho certo. Então, cifrão, abra, aumente, aspa. E então isso é ID do curso, hashtag, ID do curso, certo? Em seguida, definimos o valor desse ID do curso com hashtag esse valor de identificação no botão. Só estou fazendo isso linha por linha. Tudo isso poderia ser feito em praticamente uma linha, mas estou dividindo para que possamos ver tudo claramente. Então, queremos enviar este formulário. Então, o que vou fazer é dar a este formulário um valor de ID para que eu possa chamá-lo por seu ID. Podemos chamar isso de uma fazenda de exclusão de curso. Tudo bem? E então o que vou fazer é dizer que, em vez disso, quero enviar esse formulário ou cifrão. E depois a hashtag, o curso exclui as sub-redes de pontos do formulário. Tudo bem, essa é uma maneira agradável e limpa e estamos aproveitando o código existente. Então, vamos analisar exatamente o que está acontecendo aqui. Primeiro, estou mudando essa etiqueta de âncora para ser um botão. Quando esse botão é clicado, ele não tentará navegar em nenhum lugar. Em vez disso, ele acionará esses eventos de clique. Esse evento de clique então acionará um ótimo evento de alerta, no qual solicitamos ao usuário. Você tem certeza? Se eles disserem que sim, eles têm certeza de que essa parte é opcional? Assim, podemos avaliar se realmente queríamos mais tarde. Mas queremos obter os dados, obteremos o botão e, em seguida, obteremos os dados do botão, que é o valor de id no qual ele foi impresso. Tudo bem, então data dash ID. Em seguida, queremos definir esse valor de id no próprio formulário e , em seguida, enviar o formulário. Embora o comportamento esperado seja que, depois de definirmos esse valor de ID aqui e enviarmos o formulário inteiro, ele passará para essa ação de exclusão com esse valor de ID. E isso acionará essa operação de exclusão, que então retornará ao índice. Isso dará a ilusão de que foi excluído e a página foi atualizada. Não é uma ilusão. Isso é realmente o que vai acontecer. Tudo bem? Então, eu tenho feito dotnet watch todo esse tempo. Vamos pular e testar o sal. Então, se eu voltar e criar isso, veja que acabei de criar um curso sem sentido, certo. E estou recebendo esse erro terrível. Acredito que isso seja apenas por causa do tipo de dados inseridos. Então, deixe-me, acho que é esse porque eu limitei o número de elementos nele. Então, deixe-me dizer CBS, CW que criamos novamente. Aí vamos nós. Tudo bem. Então, essas são as coisas às quais queremos prestar atenção na forma como lidamos com essas exceções, mas vamos experimentar nossa nova funcionalidade de exclusão. Agora temos esse botão de exclusão. Se eu clicar em Excluir, receberemos esse aviso. Tudo bem, então essa parte está funcionando. Se eu clicar em Cancelar, nada acontece. Deixe-me tentar isso de novo. Se eu excluir e disser que sim, exclua-o. Recebemos as instruções. Sim, foi excluído, mas fomos atualizados de qualquer maneira. E aí está. Não, não há salto duplo. Acabamos de receber uma confirmação simples. E então, de qualquer forma , confirme ou cancele. Tudo bem. Então, agora meu desafio para você é atualizar a outra página de índice para ter um comportamento semelhante, certo? Modifique esse botão de exclusão que ele use um aviso de alerta, você deve colocar no formulário, colocando os diferentes botões, coisas das quais você tem que usar esta amostra. Agora posso remover isso, essa tag de âncora, e agora é meu botão Excluir. E veja, mesmo que seja um botão e sejam etiquetas âncora, se eu não mostrasse o código, você não saberia. Não há como saber qual é qual. Então, deixe-me reconstruir. Aí vamos nós. Portanto, não há como saber qual é uma etiqueta de ancoragem e qual é um botão, a menos que você inspecione elemento ou faça algo muito intrusivo. E se inspecionarmos o elemento, veremos aqui que o valor do ID de dados aqui é três. Assim como, uau, o URL teria um três. O elemento de ID de dados tem três, então ele o pega e o coloca nesse formulário, que eu sei que está em branco, certo? Não tem valor nisso. Mas quando clicamos em excluir, esse valor é colocado lá e depois enviado. E veja aqui, esse é o símbolo antifalsificação falamos no início do curso. Portanto, isso é muito importante para a segurança, porque você não quer que as pessoas possam simplesmente enviar solicitações de exclusão de elementos com o ID três. Tudo bem, então isso é muito importante para a proteção em que esse token antifalsificação validado no momento em que a solicitação é feita antes que a exclusão seja realizada. É por isso que eu recomendaria que aproveitássemos esse formulário para esse tipo de operação. Sempre que vamos aumentar os dados, devemos sempre usar um formulário. Agora que temos uma operação de exclusão mais interativa, podemos continuar criando mais tabelas interativas. Então, quando voltarmos, veremos como podemos melhorar a exibição de ArrayLists usando tabelas de dados. 29. Adicionar dados: Nesta lição, instalaremos tabelas de dados, que é uma biblioteca baseada em jQuery que estende a funcionalidade de nossas tabelas típicas. Agora, aqui está um exemplo especialmente ajustado para o Bootstrap five. Tudo bem, e você pode chegar lá lidando com tabelas de dados.net slash example slush styling slash bootstrap file dot HTML. Então, a partir daqui, você verá que é isso que transformará nossa mesa. Ele vem com paginação e vem com a capacidade de mostrar mais ou menos entradas por vez e uma pesquisa dinâmica. Então, se eu pesquisar alguma coisa com as letras TR, ela começará a filtrar imediatamente. É uma maneira muito legal de fazer com que nossas tabelas pareçam mais atraentes e mais orientadas por dados. Abaixo, eles também mostram como podemos fazer a integração. Então, temos que fazer essa linha de inicialização em JavaScript. Temos a amostra da tabela em HTML, teremos onde não faltam tabelas, então tudo bem. E então temos os ativos de CSS necessários, certo? Então, vamos começar com as partes do JavaScript. Eles nos deram alguns links de CDN. Então, o primeiro que precisamos é o jQuery. Já temos o jQuery porque ele saiu da caixa com nossos projetos e eles simplesmente voltaram para o layout. Podemos ver que já temos o jQuery. Isso é bom. O que mais precisamos? Precisamos do link CDN para o arquivo de tabelas de dados jQuery e precisamos de um link CDN para o arquivo Bootstrap JS. Então, o que vou fazer é duplicar essas duas linhas. Essa linha é para alertas de doces. E então vou simplesmente copiar os novos links da CDN. Tudo bem, então eles estão bem alertas. Então, na próxima, a primeira duplicata, vou substituí-la pelo link CDN de duas tabelas de dados no mínimo. E então o segundo eu vou substituir da mesma forma. Tudo bem. Então, agora temos os arquivos JavaScript para tabelas de dados incluídos em nosso arquivo de layout. Em seguida, precisamos do CSS, e eles também estão nos dando os links do CDN. E, mais uma vez, é importante seguir a ordem que eles os estão listando no CSS. Eu posso ir até o topo e vou simplesmente duplicar o bootstrap. Então lubrifique o Bootstrap. Em seguida, pegaremos o primeiro link CDN para o arquivo CSS e substituiremos a primeira referência CSS duplicada do Bootstrap. E então pegaremos essa e faremos a mesma coisa novamente. Tudo bem. Então, como as tabelas de dados exigem bootstrap, é claro, precisamos primeiro da folha de estilo do Bootstrap. E então podemos colocar no pulso. E então nosso próprio site, CSS, vem por último. Porque então, se precisarmos substituir qualquer coisa entre os três primeiros, poderíamos fazer isso em nosso próprio arquivo CSS. Tudo bem, e então este vem ainda abaixo desse arquivo CSS. Então, tudo bem. Agora que temos os ativos incluídos, avise-nos e veja como os inicializamos. Então, se eu voltar para o exemplo de JavaScript, mostrar que quando o documento estiver pronto, podemos simplesmente inicializar a tabela de dados. Então, vou copiar isso e voltar para cursos que são como o Grown 04 ou uma funcionalidade inovadora. E o que temos aqui é uma mesa com a mesa da turma. Então, vou usar a tabela de classes para identificar a tabela que já está na página. Tudo bem, então o que eu posso fazer já tem esse método ou função jQuery em execução. Então, vou colocar essa inicialização para a tabela de dados ali mesmo. Então, temos o evento de clique, que é registrado quando a página está pronta. Vamos fazer a mesma coisa aqui com uma tabela de dados. Mas o elemento que estamos visando é a tabela de pontos, ou seja, qualquer elemento que tenha a tabela de classes, que temos um elemento com uma tabela de classes. Tudo bem, então, quando eu fizer isso, vamos dar uma olhada na página dos cursos após essa modificação ou certo. Se você olhar, verá que não, estou recebendo todos esses elementos visuais que acabamos de ver. E eu posso fazer a classificação. Eu posso classificar por nome, posso classificar por código ou posso classificar pelo número de créditos. Eu posso. Este não precisa ser pesquisado porque são todos iguais. Se eu quiser filtrar, posso ver aberto e ele filtrará automaticamente, certo? Então, desse jeito, eu transformei isso. Quero dizer, já era uma tabela bonita virtude de ser um tema Bootstrap. Mas foi meio claro. Tudo bem, transformei essa tabela plana em uma tabela de dados incluindo apenas uma linha de código após colocá-la nos ativos. Os ativos. Essa é uma atividade única, porque adivinhe? Posso fazer isso em cada página em que tenho uma tabela que eu quero que seja exibida como uma tabela de dados. Então, vamos fazer, por exemplo, os cursos. Vamos dar uma olhada nas palestras de literatura. Sem modificação. As palestras ainda estão em andamento. Se eu quisesse modificar isso, vou até a página de índice de quatro palestras e já a modifiquei para fazer as melhores coisas de alertas. Então, vou inserir esse novo código da tabela de dados nessa seção. E então pronto, deixe que seja transformado. Agora, a desvantagem das tabelas de dados prontas para uso é que, bem, da forma como o aplicativo é escrito, ele está, na verdade, fazendo uma estrela de seleção o tempo todo. Então, se tivermos 1500500.000 registros, não importa quantos registros, eles sempre tentarão carregar todos eles na página uma vez. A vantagem das tabelas de dados é que elas automaticamente nos permitem folhear e limitar o número de elementos que são exibidos por vez. No entanto, no final das contas, ele ainda terá os 500.000 discos no front-end. É aí que você começa a pensar nas atividades de paginação do lado do servidor e assim por diante. Para que, na verdade, ele traga de volta apenas o número X do número total de registros, já que nosso sistema é muito pequeno, não vou me preocupar com isso ainda. Mas essa é uma boa atividade para simplesmente limpar todos os nossos elementos. Veja nosso p.sit. Então, vou adicionar isso à página de índice e, em seguida, poderemos encerrar essa atividade. Depois de validarmos essa transformação. Na próxima lição, veremos como podemos limpar a exibição de nossas etiquetas. 30. Adicionando etiquetas personalizadas: Bem vindos de volta, pessoal. Nesta lição, veremos como podemos limpar um pouco a exibição das etiquetas, certo? Não, os rótulos estão nos mostrando textos idênticos ao nome da propriedade, o que não é ideal porque não é realmente legível por humanos como programadores, parece bom para nós porque isso é tudo o que temos para escrever o código. Mas para nossos clientes e os usuários reais do sistema. Isso realmente não parece muito bom, certo? Então, o que queremos fazer é corrigi-los de uma forma que não precisemos fazer isso manualmente em cada página, porque teremos que corrigi-los no índice. Teremos que corrigi-los na criação edição, detalhes, etc. Portanto, queremos corrigi-los uma vez para que não precisemos repetir isso. Nenhuma solução simples para isso seria ir para a aula de dados, certo, para estudantes. Tudo bem, vamos começar com o curso porque não somos estudantes. Estudantes porque eles realmente têm o invólucro Pascal, certo? Então, vou usar a turma do aluno para começar esse exemplo. A solução simples seria adicionar anotações aqui, porque podemos ver facilmente essa peça. E então defina o nome. Em seguida, incluímos apenas as anotações que faltam usando quais dados estão presentes no componente de pontos do sistema , suas anotações. E então pudemos ver que o nome é igual a e definir o valor que queremos, que seria o primeiro nome do espaço. Só fazendo isso. Tudo bem, só de fazer isso, se eu atualizar a interface do usuário, você verá que não, ela tem o primeiro nome. Se eu for criar um novo primeiro nome de espaço, tudo bem, então essa é uma solução para cada estranho que isso seja exibido. E isso porque essa anotação de dados é o que informará o real. Quando tínhamos nossa mesa, tínhamos um nome de exibição para ela. Aí vamos nós. Tudo bem, então isso são cursos. Deixe-me mostrar isso no índice para estudantes. Tudo bem, então mostre o nome para FirstName. Portanto, mesmo que esse seja o elemento, o nome de exibição de obterá as instruções dessa anotação. Saiba que isso funciona. A desvantagem aqui, no entanto, é que, se o banco de dados mudar e tivermos que correr em dobras ou elementos, tudo será redefinido e isso não poderá ser mantido. Isso seria um esforço desperdiçado porque toda vez que o banco de dados muda, temos que ser confusos e, toda vez que estamos dificuldades, teríamos que ler e fazer isso novamente. E isso é literalmente uma perda de tempo. Agora, a solução para isso é criar uma classe estendida dessa classe. Tudo bem, então primeiro, todos os elementos que foram gerados a partir da atividade de andaime, onde parciais, escrever os modelos são todos parciais, até mesmo o contexto do banco de dados é parcial. Em C-Sharp, uma parcial significa que eu posso ter vários projetos do mesmo arquivo. Tudo bem, então aqui estão os projetos que o EF Core nos deu. Mas então eu posso criar outro projeto que complemente este. E é isso que vamos fazer para remediar a situação. Então, vou criar uma nova classe e criá-la na pasta de modelos. E você arquiva, eu quero chamá-lo de dados do aluno. E então eu preciso do meu namespace, que será, e eu sou muito preguiçoso. Às vezes, vou pegar tudo isso emprestado e dizer namespace, nomeie modelos de pontos. Tudo bem? Em seguida, temos nossa turma, que são os dados do aluno. Tudo bem? Não, claro que isso é público, classe pública. Certo? Agora, em nossa classe pública, com dados de mentores de estudantes, posso realmente definir propriedades que correspondam ao aluno original, certo? Então, digamos que eu queria esses três elementos e estou usando esses três porque, id, eu realmente não preciso substituir nada por ID. Tudo bem? Então, vou usar esses três e colocá-los aqui. Então eu posso colocar minhas anotações para que eu possa dizer “exibir”. E o nome é igual a. O nome é igual a. E, claro, preciso das minhas declarações de uso perdidas. Aí vamos nós. E então esse será o espaço do primeiro nome. E então vou copiar isso e reutilizá-lo para sobrenome e data de nascimento, corrigir a formatação, é claro, e depois ajustar o texto que está sendo exibido. Assim, a data de nascimento recebe a data de nascimento, espécie de alimento e o sobrenome recebem o nome espacial perdido. Tudo bem. Então, agora os definimos e também podemos fazer outras coisas, como validações específicas, certo? Então, se eu quisesse. Para colocar isso, ok, isso nunca deve ter mais de 50 caracteres quando inserido na interface do usuário, eu posso colocar um comprimento de string de 50, certo? Eu poderia afirmar isso. Ok, na interface do usuário, talvez não esteja no banco de dados, tanto na interface do usuário. Eu quero atender a esse requisito, certo? Então, essas são coisas que podemos fazer para forçar validações e exibições no lado do cliente ou na interface do usuário, certo? Não vou exigir que eu esteja apenas mostrando e não preciso que tenha o comprimento 50 da corda, então tudo bem. Agora que temos esse arquivo de metadados, como associamos isso ao modelo de dados real? Bem, logo abaixo, no mesmo arquivo, vou ter apenas uma declaração de alunos públicos de turma parcial. Então, lembre-se de que uma parcial me permite ter o, as implementações são os projetos em vez de em vários lugares. Então, isso vai estar em um plano vazio, certo? Mas quando tudo estiver compilado, tudo o que eu colocar nesse plano será compilado com o que eu coloquei nesse plano. E então, tudo será apenas um grande projeto no final do dia. Portanto, não, preciso associar esse plano aos metadados do aluno. Então, vou dar a classe parcial e a anotação, que é o tipo de metadados do modelo dele. Talvez seja necessário incluir uma referência de uso. Então, se você receber um erro, quando você vincula esse modelo a um tipo de dados, nós apenas controlamos os pontos e as instruções de uso, certo? Então, estamos vendo um tipo de metadado do aluno. Então esse é o associado, essa classe de metadados com o conhecimento parcial quando eu examino e atualizo nossas páginas, ela não está funcionando. Não está funcionando. Isso é porque estou no namespace errado. Tudo bem, então eu coloquei o namespace com base na pasta. Quero dizer, obviamente, mas a classe parcial real está em um namespace diferente. Então, para que essa parcial saiba que é parcial à outra. Uma maneira fácil de saber que é se eu Control clicar aqui, ele dirá que não há referência ao telefone, certo? Mas então, se eu alterar esses dados, mudar o namespace para dados e, em seguida, permitir que eles sejam atualizados quando eu clicar neles, sem clicar no controle, ele saberá que, ok, há uma parte dos alunos aqui, e também há um aluno parcial aqui, certo? Portanto, o namespace é muito importante. Provavelmente, você poderia colocar esses metadados dentro da pasta de dados. A atividade de andaime realmente só substituirá os arquivos, ignorando um parafuso. Qualquer coisa que já esteja lá não será excluída, mas isso depende de você. Vou deixar isso como está e vamos tentar de novo. Então, quando eu refresco, lá vamos nós. Então, primeiro nome, sobrenome, data de nascimento. E isso parece muito mais fácil de ler. Muito mais fácil de usar se eu entrar em detalhes, também é um tópico fixo. Se eu for para Editar, também será corrigido. Portanto, não preciso percorrer todas as páginas e fazer essa mudança para HTML, criando um lugar e ela terá valor em qualquer outro lugar. Essa é uma maneira fácil e agradável de modificar a exibição e as seções de rótulos de nossas, bem, a exibição em nossa interface de usuário a partir de nossas aulas. Então você pode tentar a mesma coisa com uma palestra. Vá em frente e crie essa palestra e a aula de MetaData. A parte que me lembro é que o namespace precisa corresponder. E então você pode adicionar seus próprios nomes de exibição e validações, se necessário. 31. Gerenciando alterações de banco de dados: Tudo bem, pessoal, então recebemos feedback sobre o que estamos fazendo por meio da interface de usuário, funcionalidade, de tudo, e recebemos um ótimo feedback. Eles adoram isso. O cliente está morrendo de vontade de usar o sistema. Mas eles disseram que, tudo bem, antes de podermos usar totalmente o sistema, precisamos de mais dois recursos. Tudo bem? Portanto, os dois recursos que eles estão solicitando exigirão alterações no banco de dados. Nesse caso, eles querem poder acompanhar as aulas. E uma aula é definida por um professor ministrando um curso em um horário específico. E então eles querem poder rastrear as matrículas dos alunos, o que significa que um aluno está matriculado em uma turma. Tudo bem, isso significa que precisamos de duas tabelas adicionais. Agora, eu tenho o Data Studio e já estou conectado à minha instância em execução no escuro. Assim, você pode clicar em pausar, abrir seu Data Studio e ativar o Darker, se precisar. Se você precisar de uma atualização sobre isso, você deve ter uma interface de usuário mais escura onde você pode simplesmente acessar a lista de contêineres e procurar seu Microsoft Container e que você configurou, eu posso clique no botão Reproduzir. E depois que isso estiver instalado e funcionando, você poderá se conectar usando o Data Studio. E o Data Studio geralmente faz um bom trabalho em reter os detalhes da conexão. Então, agora o que precisamos fazer é escrever um novo roteiro. Então, vou abrir um novo roteiro e então você pode ver estou retomando de onde parei da última vez aqui. Mas nesta janela de script, vou começar com uma declaração de uso, então sabemos que precisamos usar o banco de dados de gerenciamento escolar. Agora, o interessante sobre o Data Studio é que você pode fazer essa instrução de uso, mas também pode selecionar o banco de dados nessa lista suspensa do topo. Eu costumo fazer isso de qualquer maneira porque às vezes você pode esquecer fazer essa parte e acabar executando um script no banco de dados. Portanto, sempre comece com suas declarações de uso. Não, preciso criar duas novas tabelas. Então, vou criar uma tabela e você vai me ver meio que quebrar a disciplina porque o SQL não diferencia maiúsculas de minúsculas. Então, inicialmente, tentei o meu melhor para capitalizar as palavras-chave. Vou relaxar desta vez e não ter tanto cuidado. Tudo bem? Então, estamos criando uma tabela chamada classes e ela obterá um ID que é int, chave primária e identidade que sempre deveria estar lá. Além de eu sugerir que ela deveria estar sempre lá, Entity Framework adora ver quando há uma chave primária. Tudo bem, então isso gera muita dor de cabeça quando se trata de usar o EF Core. Segure a caixa de uma forma muito poderosa. Então, o que mais a turma da turma terá nossa referência, o ID da aula. Então, esta é a primeira vez que vamos fazer uma chave estrangeira aqui, ID da aula, que é inteira, é uma chave estrangeira que faz referência à tabela de palestras e à coluna id. Então, mais uma vez, se você não está tão familiarizado com chaves estrangeiras e relacionamentos para revestir meu curso de desenvolvimento de banco de dados, Microsoft SQL Server para todos. No entanto, se você for, isso deve parecer muito familiar para você , porque obviamente precisamos associar a classe à palestra. E a turma também precisa estar associada a um curso. Então, temos que fazer a mesma coisa e apresentar, introduzir um ID do curso, que também é um número inteiro e uma chave estrangeira que faz referência ao curso é estável e a coluna id. Bem, para Não, eles disseram que só querem tempo. Então, vamos supor que, uma vez que esse horário esteja no sistema, isso significa que esta palestra ministrará este curso neste horário, todos os dias da semana. E é isso que constituirá nossa classe. E o que fazemos aqui ou as decisões aqui são baseadas nas regras de negócios e nos requisitos de negócios do cliente. Tudo bem. Então, estou apenas tentando mantê-lo de forma muito simples. Pode não ser o sistema mais realista no grande esquema do sistema de gestão de escolas aquáticas. Mas estou apenas mantendo as coisas simples para que possamos entender alguns desses conceitos. Tudo bem? A próxima tabela seria a tabela de inscrições, e vou colocá-la aqui. Temos inscrições no Create Table. Ainda temos nosso ID de chave primária. E então uma matrícula é definida por um aluno. Portanto, precisamos da identificação do aluno, chave estrangeira que faz referência à coluna ID na tabela dos alunos. E depois a aula que o aluno está cursando. Esse ID de classe, referenciando a classe, é estável. É por isso que temos que ter certeza de criar a classe antes de criarmos as inscrições, porque há uma dependência ali mesmo na tabela de clássicos. Agora temos o que podemos correr. E isso foi concluído com sucesso. Então, se eu desistir, vou ver que agora tenho aulas e inscrições de duas novas tabelas foram criadas. Agora, como colocamos essas duas novas tabelas em nosso aplicativo, certo? Então, já temos o professor do curso, aluno sabe que precisamos de novos cursos. Então, vou parar meu relógio dotnet. E vamos mostrar esses trechos de terminologia. Então, estou trazendo isso à tona e deixe-me aumentar o tamanho da fonte. Então, vou criar o mesmo comando que usamos pela primeira vez para trazer todos esses elementos. Então, eu tenho o comando aqui e podemos atualizar sua memória sobre o que cada seção cria. Mas apenas em um ou dois, o que eu fiz no passado foi criar um arquivo parcial no qual esse comando residiria, porque esse comando nunca o mudaria de lidar com um banco de dados inteiro a hora, certo? Então, em vez de tentar reescrevê-lo da memória ou colocá-lo em algum lugar e esquecer onde eu o coloquei. Eu o coloquei em um arquivo parcial e o coloquei no projeto. Então, o que eu faria é apenas executar aquele arquivo Porsche que executaria esse comando. E isso só vai me dar o nível de consistência que eu preciso. Isso é algo que provavelmente podemos ver na seção de bônus deste curso. Mas, por enquanto, vamos reordenar o comando. Então, temos dotnet, EF, EV, contexto confuso e, em seguida, temos nossa string de conexão. E lembre-se de que, se você tiver caracteres especiais em sua cadeia de conexão, especialmente como na senha que eu tinha com esses dois cifrões , você precisaria usar uma única aspa, tudo bem? Para recuperar a string de conexão, é claro, você pode simplesmente ir para as coisas opostas, como o arquivo JSON. Você pode copiá-lo e colá-lo lá. Então temos o provedor, que em nosso caso é o SQL Server, estamos forçando a forçar o andaime para que ele substitua todos os arquivos do telefone no diretório de saída, que são dados. E não queremos nada na configuração porque não queremos, não queremos que contexto do banco de dados tente ter sua própria cópia da string de conexão no núcleo. Tudo bem, depois de fazer tudo isso, pressionamos Enter e permitimos que ele seja executado, e ele constrói um projeto com sucesso. Quando voltarmos ao nosso Explorador de Arquivos, veremos que agora temos esses novos arquivos. Deixe-me diminuir um pouco. Tudo bem, agora temos a aula I, a ID do curso. Você tem tempo com as propriedades de navegação, o curso e as matrículas, certo? Então é isso que a turma traz para a mesa. A inscrição inclui matrícula, carteira de estudante, ID da turma, alunos da turma primária. Tudo bem. Então, agora temos uma tabela adicional. Então, o que eu desafiaria você a fazer é, na verdade, ler e arranhar as páginas da multidão dessas duas mesas. Você também notará que ao testar sua interface de usuário , como fizemos as classes de metadados, não perdemos nossos rótulos, então isso é bom. Tudo bem, agora você pode fazer o mesmo tipo de extensão de metadados para eles. Se necessário. Você pode ver a interface do usuário e ver como ela é básica e ajustá-la para capturar com precisão os dados que precisam ser capturados. 32. Corrigir erros de sintaxe: Tudo bem, pessoal. Então, eu estava preparando os controladores para os novos e novos modelos de dados. E eu comecei com a aula e me deparei com vários erros. Então, não estou escondendo a Terra de vocês porque se eu tiver os erros, vocês têm flechas, quero que os resolvamos juntos. Eu queria ajudá-lo a entender por que estamos recebendo esses erros. Agora, a classe de palavras é uma palavra-chave em C Sharp na maioria das classes de idiomas, certo? Então, o problema aqui é que temos o que chamaremos de linguagem de domínio, linguagem específica do domínio, que neste caso seria a construção de um sistema de gestão escolar. Portanto, a palavra classe significa algo diferente para uma escola do que para uma linguagem de programação. É irônico que a palavra-chave seja tão importante na linguagem de programação que esteja causando um conflito com certas coisas. Então, aqui no controlador de classes, você notaria que os elementos que estou percorrendo são erros para que possamos entender a sintaxe diferente que podemos estar vendo. Aqui você verá na aula de sinais que dizer um anúncio é como um assassino de palavras-chave. Então, se disséssemos a palavra classe por si só, isso causaria um erro porque classe, mais uma vez, é uma palavra-chave usada ao definir uma classe real no código. Portanto, não podemos usar essa palavra-chave como uma variável. Se você precisar usar uma palavra-chave como variável, você pode colocar o sinal de adição na frente dela. E então isso meio que ativará seu status de palavra-chave. Em C-Sharp. Saiba que os erros que estamos cometendo envolvem isso no signo. E estava tentando gerar, acho que estava apenas tentando ser inteligente e se perdeu ao longo do caminho, certo? Então, todos esses sinais aqui, em vez das expressões lambda, não são caracteres ilegais porque ele não pode simplesmente ter uma camada de óxido que podemos facilmente trocar todos esses sinais por uma lambda token de expressão. Eu sempre uso Q. Você pode usar C se quiser. Realmente não importa, mas eu só queria ter certeza de apontar o que está causando esses erros, quais são esses sinais. Então você não sentiu que fez algo errado porque provavelmente a culpa é mais minha e é sua em termos de usar uma palavra-chave como essa sem apontar os perigos, certo? Então, uma vez que fizermos tudo isso, poderemos fazer uma construção de dotnet. Então, deixe-me fazer uma compilação de dotnet novamente. Tudo bem, e eu tenho alguns avisos, mas nada a escrever sobre barcos. Isso é algo sobre a referência nula. Discutiremos isso um pouco mais tarde. Na verdade, eu estava no processo de arquivar as matrículas. Tudo bem. São pequenos barcos. Tenho certeza que vocês já estão. Estou em cima disso. Mas se eu fizer um CLS e depois reativar esse comando para as inscrições. Então, vamos tentar organizar as matrículas juntos. E depois de alguns segundos, agora temos o controlador de inscrições e o suporte de visualizações. Tudo bem, então eu só queria entrar e , caso você esteja compartilhando essa dificuldade, mostrar que eu também tive uma dificuldade e que há um gráfico de saídas. Então, nos vemos na próxima lição. 33. Adicionar ao GitHub: Tudo bem, então esse módulo nos ajudou a realizar algumas atividades silenciosas. Analisamos a limpeza da interface do usuário usando o Bootstrap Styling como um todo para adicionar algumas bibliotecas jQuery de terceiros ao nosso fluxo de trabalho. Como personalizar rótulos de forma que não sejam sobrescritos toda vez realizamos uma atividade de andaime e nos deparamos com alguns erros de sintaxe e encontramos uma saída. Isso é o que a programação realmente é. Vamos cometer erros, mas não se trata de evitar erros. Trata-se de corrigir os erros e triunfar sobre as áreas, certo? Neste ponto, chegamos a outro grande posto de controle. E o que vamos fazer é configurar nossa mensagem de check-in ou confirmação. Então, digamos que tenha terminado de personalizar visualizações e elementos. Sim, eu acho que isso é bom. Você provavelmente também poderia adicionar isso. Você adicionou aulas e matrículas. Tudo bem, mas vamos seguir em frente, nos comprometer e insistir nisso. Nos vemos na próxima lição. 34. Compreender a autenticação: Tudo bem, pessoal, então, nesta seção do curso, vamos analisar a autenticação e por que ela é importante e quais são nossas opções. Não, a autenticação é importante quando queremos controlar o acesso ao nosso aplicativo como parte do nosso aplicativo. Bem, predominantemente a autenticação rege todo o aplicativo. Portanto, é parte de sua necessidade de autenticação ou dos dormitórios. Tudo bem? Então, por exemplo, qualquer pessoa pode acessar a página inicial, certo? E olhe e diga o que quer que seja fechado. No entanto, somente usuários logados talvez possam ver esses links. E mesmo que eles consigam memorizar o link, eu sei que eles podem ver os cursos de barra serem cortados e, em seguida, tentar navegar até lá. Eles devem ser obrigados a fazer login ou se autenticar antes de prosseguirem. Então, essas são as coisas que autenticação traz para a mesa, certo? A autenticação exige que você identifique quem você é e verifiquemos quem você é. Depois, há outra parte chamada autorização, o que significa que alguém pode estar autorizado a criar um curso, mas pode não estar autorizado a excluir o curso. Pode não ser autorizado o final do curso, mas eles estão autorizados a ver a lista e ver os detalhes, certo? Autorização significa o que você pode fazer na minha inscrição? Agora, em termos de nossas opções, temos a opção de ter nosso próprio sistema de autenticação. O ASP.Net Core vem com sua própria biblioteca, o núcleo de identidade, que nos permite integrar de forma fácil e perfeita os serviços de autenticação em nosso site. Agora, com alguns comandos, poderíamos realmente ativar todas ou pelo menos 90% das funcionalidades necessárias para fazer isso. Mas haverá algumas limitações porque se trata de um aplicativo da web. Mas talvez o cliente, no futuro, queira ter um aplicativo móvel. Ou talvez eles gostariam de ter vários aplicativos que usassem vários aplicativos que usassem o mesmo nome de usuário, senha e credenciais. Então, nesse ponto, você tem que pensar bem. Você tem que pensar fora da caixa, certo? Eu crio sistemas de autenticação diferentes para todos esses cenários diferentes e, em seguida, tento fazer tudo funcionar. Ou eu tento centralizá-lo, mas ainda preciso mantê-lo? Ou eu apenas terceirizo isso para um provedor terceirizado que fornece todos esses serviços. De qualquer forma, para este curso, vamos escolher a última opção, que é usar uma plataforma de terceiros que faça tudo isso de qualquer maneira. Então, a plataforma que vamos usar está desativada. 0.0 fornece recursos de autenticação e segurança do usuário seguros e protegidos. Está na forma de um SaaS. Então, isso significa que não precisamos hospedar nossos próprios dados se nosso banco de dados falhar, ainda temos todos os dados do usuário hospedados por esta plataforma. É fácil de integrar porque eles têm muitas predefinições as integrações são muitas considerações que faríamos para realmente proteger ou melhorar, elas já foram resolvidas e com as quais é muito fácil integrá-las. Assim, você pode se registrar em uma conta usando off zero, então zero.com, e então você pode simplesmente entrar com sua conta do GitHub porque você deveria, neste momento, já ter uma conta do GitHub e começar a usar gratuitamente. E na próxima lição, veremos qual é a próxima etapa. 35. Registre-se para o Auth0: Tudo bem, pessoal, então presumo que vocês já se inscreveram. Se você usa sua conta do GitHub ou um dos outros ícones sociais, suas colunas já foram criadas manualmente. Todos nós deveríamos acabar em uma tela como essa. Isso não está começando. Então, a primeira coisa que eles veem é integração do zero em seu aplicativo. E então podemos prosseguir e criar um aplicativo. Agora eles vão perguntar: que tipo de aplicativo você vai criar? Então, isso só mostra a variedade de suporte que eles oferecem, certo? Porque se não devêssemos criar nossa própria autenticação para todos esses dispositivos, isso poderia causar muita sobrecarga de manutenção. Então você sempre quer escolher suas batalhas. Você sempre quer ter certeza de que está tomando a melhor decisão para seu cliente e para o projeto que está em questão. Então, a partir dessa perspectiva, poderíamos ver que estamos criando um desktop móvel ou uma interface de linha de comando baseada em aplicativos de uma única página usando uma dessas estruturas de spa. Estamos fazendo nosso aplicativo web regular usando uma estrutura de desenvolvimento tradicional para a web? Ou estamos fazendo uma CLI ou demônios? Então, acho que, para este, definitivamente gostaríamos de usar a web normal porque vemos o asp.net na lista. E então podemos dar o nome a ele. Vamos chamar isso de gestão escolar. Tudo bem. E então podemos seguir em frente e criar. Agora, a próxima coisa que eles estão perguntando é me dizer qual tecnologia usar, certo? Então, aqui está uma lista maior de todas as tecnologias possíveis que poderiam ser usadas com base em nossa seleção. Mas é claro que estamos usando o asp.net Core. E escolheremos a versão da ferramenta de três pontos porque, a partir de três, tudo foi meio que padronizado. Então, podemos seguir em frente e selecionar esse. E não, eles estão nos dando esse ID de cliente e podemos passar por diferentes configurações e até nos mostram como podemos prosseguir com a integração, tudo bem, e aqui está o suporte. 3.1. 565 também é suporte 6.7, funcionam perfeitamente em conjunto para possamos definitivamente prosseguir com o que estamos fazendo aqui. Então, se simplesmente percorrermos a explicarmos exatamente o que precisamos fazer, obtenha suas chaves de inscrição. Depois de se inscrever, você precisa acessar as Configurações de aplicativos e, em seguida, configurar certas coisas. Tudo bem, então vamos começar acessando as configurações do aplicativo e precisamos definir alguns URLs, certo? Então, vou abrir isso em uma nova guia. E então, na lista, você provavelmente já terá o aplicativo padrão e terá sua atualização recém-criada para poder selecioná-la. E esse é o nosso domínio, esse é o nosso ID de cliente. Precisamos dessas configurações para mais tarde, mas, por enquanto, o que precisamos fazer é configurar nosso URL. Temos o que chamaremos de URL de retorno de chamada de carregamento e, em seguida, um logotipo de carregamento amanhã, e assim por diante. Precisamos usar esses URLs para usar o URL do aplicativo. Deixe-me voltar para o nosso projeto a partir da nossa pasta de propriedades, lawn settings.js, e vamos emprestar esse URL. E o formato do URL precisa ser esse URL e cortar a palavra callback. E então, para o logotipo amanhã, podemos simplesmente deixar o URL padrão. Agora, se precisássemos facilitar vários URLs de retorno de chamada, como indica onde estamos em desenvolvimento. E então talvez tenhamos um ambiente de teste, um ambiente acuidade e o ambiente real de produção. Teremos vários desses URLs para o mesmo aplicativo, certo? Assim, podemos apenas colocar uma vírgula, separá-los e cada um representará apenas o URL conforme necessário. Então, enquanto estivermos lá, podemos deixar as coisas assim. Depois de colocar esses valores, vamos nos certificar de que vamos até aqui e clicamos em Salvar alterações. Agora, depois de fazer isso, queremos adicionar os arquivos de configuração ou esses arquivos-chave específicos ao nosso aplicativo. Então, voltaremos ao código do Visual Studio. Dessa vez, acessaremos as configurações do nosso aplicativo e, em seguida, poderemos criar uma nova seção. E eu vou fazer isso em um host de carga e cancelaremos isso de zero. E então esta seção vai ter duas chaves, vai ter domínio. Deixe-me obter meu domínio vermelho de digitação. Aí vamos nós. E isso vai ter um valor. E então vamos fazer o ID do cliente. Portanto, esses são valores que ajudarão zero a saber qual aplicativo está fazendo uma solicitação. Então, esses valores nos são dados aqui. Tudo bem, então esse é o nosso domínio, esse é o nosso ID de cliente. Então, vou pegar emprestado esse valor de domínio e colá-lo lá. E vou pegar emprestado esse valor de centralidade, colá-lo aqui. Agora que temos isso, precisamos nos integrar com o pacote NuGet, certo? Então, deixe-me interromper o aplicativo em execução aqui e deixar eu limpar tudo. Então, precisamos do pacote dotnet add e estamos adicionando. Autenticação de pontos ASP NET Core sem zero pontos. Então, quando fazemos isso, damos alguns segundos e sabemos que está instalado, podemos passar para a próxima etapa. Então, antes de passar para o próximo slide, eu só queria ressaltar que tudo o que estou vendo está realmente documentado aqui. Então, entre o que estou vendo e o que esse documento real está vendo, estamos fazendo a mesma coisa, certo? Então esse é um passo que acabamos de dar. pacote instalado seria se você estivesse usando o Visual Studio e usando o gerenciador de pacotes NuGet, onde não. Então, usamos o pacote dotnet add, parece antigo com, certo? A próxima coisa que queremos fazer é adicionar aos nossos serviços as configurações que sabemos que usaremos do zero. Não. A sintaxe aqui é um pouco diferente, principalmente porque isso é realmente para o dotnet Core 3.1, 56.7, todos têm um program.cs de aparência diferente, mas é o mesmo conceito, certo? Então, podemos pegar isso emprestado, pular para o nosso projeto goto em nosso arquivo program.cs. E deixe-me diminuir um pouco o zoom para que você possa ver um pouco melhor. Aí vamos nós. Deixe-me fechar esse terminal dentro dos serviços logo acima controladores AD com visualizações que eu quero adicionar e extraídas da amostra. Agora, obviamente, há um erro aqui porque não são mais serviços. Agora são serviços Builder Dot, mas é a única grande diferença. E então podemos adicionar as instruções de uso para aquela biblioteca ausente onde temos configuração e não vai dizer configuração de pontos do construtor, então eu posso simplesmente substituir essas duas referências de citações de configuração. Aí vamos nós. Então, agora o que vai fazer é examinar a configuração e encontrar, encontrar a seção zero e, em seguida, usar o valor booleano. E então a mesma coisa para a chave do cliente. Por fim, queremos adicionar a autenticação. Então, queremos adicionar o middleware que oferece suporte à autenticação. Portanto, já temos um que oferece suporte à autorização. Vou apenas duplicá-lo e usar o primeiro para dizer use autenticação e tudo mais. Isso é muito importante. ordem é importante porque, no processo, precisamos nos autenticar antes de tentarmos autorizar. Lembre-se, isso significa me dizer quem você é, então este significa ok, o que você pode e pode fazer? Não queremos começar a determinar o que você pode ou não fazer antes de determinarmos quem você é, certo? Então, isso é muito importante para o chão. Tudo bem, agora que concluímos o registro do serviço e conhecemos a configuração do middleware de autenticação. Vamos passar para o login. Agora eles estão nos dando uma amostra de um controlador de conta, certo? Então, vou copiar esse bloco de código voltar para o nosso Visual Studio Code. E na pasta de controladores, vou criar um novo arquivo que não quero chamá-lo de controlador de cone dot cs. E então eu vou colar. Tudo bem, também vou dar a ele um espaço de nome apenas para garantir que tenhamos alguma uniformidade, diz os controladores MVC do aplicativo School of Management, certo? E depois ponto e vírgula. E o controlador precisa dessa declaração de uso para isso. Tudo bem, agora temos um controlador de cone e esse controlador de ícones será de onde o login será invocado. O URL de retorno basicamente significa que sempre que você fizer login, volte para o que está na barra, que é a página inicial. Mas aqui embaixo dizemos que as propriedades de autenticação var são iguais à nova autenticação de login no construtor de propriedades. E isso indica que aqui estamos indo para um usuário leitor astuto depois de eu fazer o login e tal e tal, certo? Então esse é o URL de retorno. Então, se você quisesse que eles fossem para outro lugar, você poderia fazer isso. Muitas vezes, quando as pessoas clicam nos botões de login de uma determinada página, essa página é URL, é o que entra aqui. Portanto, esse é o valor padrão, caso nenhum URL de retorno tenha sido fornecido , ele apenas redirecionará para ele. Caso contrário, sempre redirecionaremos para esse URL de retorno. Em seguida, veremos problemas contextos de UP que desafiam esse desafio, async é cortesia da autenticação de pontos ASP NET Core Core de zero pontos, referência de biblioteca. E, basicamente, basta configurar o esquema de autenticação, que vem dessa classe de constantes, que também vem desse namespace. E estamos repassando as propriedades adequadamente. Tudo bem, quando isso acontecer, ele realmente nos redirecionará para um pêssego fora de zero. Então, ele sairá do nosso aplicativo até esse aplicativo, que é tudo zero, carregará o usuário para autenticação e depois será enviado de volta. E então será o leitor de agendamentos para esse URL de retorno. Na próxima parte do aplicativo ou nessa configuração à qual eu quero prestar atenção, podemos fazer o perfil do usuário. Eu acho que essa também seria uma boa. Então, podemos copiar isso porque está no mesmo controlador de ícones. Observe, porém, que ele tem essa autorização na notação. Deixe-me copiar isso e colá-lo em nosso controlador de ícones existente. E então eu vou sair e copiar isso também. E então podemos ver exatamente o que estamos vendo. Aqui. Autoriza uma anotação que basicamente informa a essa ação que ela exige que um usuário autenticado possa acessá-la. Não, está faltando usar declarações desde a Terra, então controle pontos e então obtemos isso usando a declaração. Para os tipos 3M, também faltam declarações de uso. Então, reivindicações, o que são reivindicações? As reivindicações são informações incluídas no que chamamos de token. Tudo bem, então deixe-me explicar isso para você. Quando passarmos para zero e nos autenticarmos, eles devolverão um token. Esse token será apenas um bloco de string codificada que contém todas as informações sobre você. Bem, todas as informações relevantes , espero que nada sensível. E é por isso que é importante usar essas autoridades sobre o assunto. Até mesmo para entender como você faria a sua própria. Porque qualquer coisa que você não tenha considerado, eles já o fizeram. Então, all zeros é uma das principais autoridades em segurança de usuários, certo? Então, o que estou vendo aqui é que o token que é enviado de volta é usado pelo nosso aplicativo para indicar que você está autenticado. Portanto, a presença de um token significa que você está autenticado. Saiba que o conteúdo desse token incluiria seu nome com base no que você forneceu ao registrar seu endereço de e-mail, até mesmo uma imagem de perfil, se você a enviasse em algo assim. Então, todas essas afirmações vêm do Tolkien, e todas elas são informações para indicar quem você é, que propósito você serve, o que você pode ou não fazer. Portanto, até mesmo os papéis e o eu podem ser incluídos nesse kit de ferramentas. Não, o autorizado, mais uma vez, significa que você não pode atingir esse endpoint a menos que tenha um token. O que significa que, se eu tentasse navegar para fazer o login, tudo bem. Se eu tentasse navegar para qualquer outra parte do meu set, tudo bem. Se eu tentei navegar aqui com a autorização ativada, não consegui. Isso me forçará a fazer o login. A mesma coisa para sair. Isso me forçará a fazer login ou a fazer login para que eu possa sair se não estiver logado. E depois que esse logotipo estiver pronto, nós os redirecionaremos para a página inicial. Tudo bem. Portanto, a placa na parte superior termina em duas partes. Temos as sandálias assíncronas, o que, na verdade, está enviando os contextos em que estamos conectados até o zero. É por isso que esse é o esquema de autenticação que está sendo usado com o mesmo antigo. Parece muito semelhante ao desafio ver onde estamos usando o mesmo esquema de autenticação, certo? O próximo supernodo está fora do cookie. Porque o que acontece é que quando o token é passado do zero, ele é armazenado em um cookie localmente em nosso site, certo? Então, essa será a forma estabelecida pela qual o aplicativo sabe que há alguém autenticado. É por isso que estamos usando o padrão de autenticação de cookies. Então, quando você sair, precisamos nos atribuir como está. Deixe o asp.net Core lidar com qualquer login no Aesop para o esquema de autenticação de cookies. Tudo bem, então é basicamente isso que essas duas linhas estão fazendo. Mas a combinação ou o resultado combinado é que você não terá mais um token válido, RBC de sessão válido e como um usuário autenticado, e será redirecionado para a parte de login, desculpe pela página de índice. Agora, se eu voltar para a documentação, você verá que agora estamos no final. Não há como dizer, Ok, o que vem a seguir? Assim, você pode começar a analisar coisas como adicionar uma autorização baseada em funções. Portanto, eles terão muitas amostras que você poderá examinar para descobrir como integrá-las ao seu aplicativo para node. Ou queremos testar e ter certeza de que podemos forçar os usuários a fazer login. Então, vou afirmar que, para o controlador do curso, você precisa estar autorizado a, digamos, criar o índice. Temos os detalhes, mas vou colocar uma bandeira de autorização ou uma notação logo acima da criação. Você tem que ser autorizado. E então podemos controlar os pontos que estão faltando usando a referência. E então, na próxima lição, vamos testar isso e ver como funciona. 36. Teste de autenticação: Tudo bem, agora eu tenho meu aplicativo em execução. E o que queremos fazer é testar para ver se nossa autenticação funcionará como esperávamos e como será toda a experiência do usuário. Para que eu possa navegar pelo site. Quero dizer, eu só fechei alguns lugares e um lugar em que me certifiquei muito fazer isso em uma lição anterior foi o formulário de criação de quatro cursos. Então, quando eu clico em Criar, ele não sairá do meu site. Então esse é o domínio que me foi dado, certo? Esse é o domínio, é claro, quando pagamos e nos inscrevemos em um plano pago com osteo weekend para personalizar essas coisas. Mas, por enquanto, está tudo bem. Agora, isso permite que um usuário forneça seu endereço de e-mail, senha ou continue com o Google. Eles podem até se inscrever. Então, deixe-me ver como fica quando eles se inscrevem. Para se inscrever. E mais uma vez, tudo isso pode ser personalizado. Você pode alterar o logotipo, podemos estender esse formulário de registro. Mas a maioria dessas coisas vem com o pagamento do serviço. Mas, de um modo geral, tudo o que você realmente precisa é de um endereço de e-mail e uma senha. E, mais uma vez, é muito conveniente porque tem autorização social ou autenticação social, uma espécie de lata grande. Ou podemos colocar em outras plataformas sociais, microsoft, LinkedIn, GitHub, etc, tudo nessa tela. E podemos fazer isso sem escrever muitas outras linhas de código. Portanto, é muito conveniente. Então, vamos em frente e eu vou usar um desses testes, endereços de e-mail que eu tenho. Vou apenas dizer SEM. Sem e minha senha especial, aqui estão as vitórias, VP, essence W ou d one. Você pode ver aqui que toda essa validação está sendo feita para mim. Posso clicar em Continuar e, em seguida, eles se certificarão testar e ver se você deseja conceder consentimento para que o aplicativo acesse seu perfil. Eu vou dizer que sim. E estou recebendo essa exceção. Eu sei, você me conhece, não vou esconder as exceções porque é importante que façamos isso e entendamos por que obtemos certas coisas. Agora, o que está acontecendo aqui é que está dizendo esse campo de correlação. E eu suspeito que seja principalmente porque estamos usando o protocolo HTTP. O Https é o preferido quando fazemos esse tipo de coisa. Tudo bem? Então, o que vamos fazer é voltar para nossa configuração de autenticação zero para cima. E caso você não se lembre de como chegar aqui a partir do seu painel de introdução. Na verdade, você pode simplesmente ir para Aplicativos e depois para Aplicativos aqui. Aí vamos nós. E então você escolhe seu up. Tudo bem? Em seguida, o que vamos fazer é adicionar os URLs HTTPS ao nosso login e ligar de volta. Tudo bem, então o URL HTTPS, se você voltar às configurações do seu pulmão, estiver abaixo do perfil HTTPS , você encontrará os dois URLs , encontrará um HTTPS e o HTTP. Então, você pode simplesmente copiar os dois e colar. Certifique-se de colocar o Slash Call Buck. E em vez de um ponto e vírgula, coloque uma vírgula de acordo com as instruções logo após a autenticação do usuário e usará apenas um dos URLs. E eles estão vendo que preferem HTTPS. Tudo bem? Então, vou colocar os dois, mas de verdade, queremos que o HTTP S1 seja usado. E a mesma coisa com o logotipo. Tudo bem? E então lembre-se, uma vez que você atenda essas alterações, salve as alterações, a essas alterações, salve as alterações, a notificação manda esperar cerca de 30 s. O que eu vou fazer é em nosso dotnet, em nosso VS Code, vamos executar com o perfil HTTPS. Acho que fizemos isso antes, quando dissemos dotnet run e depois dizemos hífen, hífen. Deixe-me limpar a tela para que fique um pouco mais clara. Vemos dotnet executar hífen, perfil de lançamento de hífen. Eu sei que estamos fazendo HTTPS. Então, quando fizermos isso, pressione Enter. Agora podemos executar nosso aplicativo a partir de qualquer um deles. Mas o middleware que está no program.cs sempre forçará o redirecionamento de HTTPS de qualquer maneira. Então, vamos prosseguir e fazer o mesmo teste novamente usando o HTTPS. Você também notará que embora tenha recebido esse erro, você já está autenticado porque, se tentar voltar para essa página, poderá acessar a página. Então isso significa que você está falando está presente. E se você estivesse assistindo ao console ou à janela do terminal, você verá que o Tolkien veio Buck e todo aquele aperto de mão do OpenID. Portanto, todos os zeros fornecem serviços do OpenID Connect. E isso é como um aperto de mão entre seu site. E o resultado final desse aperto de mão é que seu aplicativo recebe um token e, sem nós, é autenticado. Infelizmente, ainda não configuramos o botão de sair, então estamos autenticados sem nenhuma forma de autenticação. Então, o que vou fazer é pegar esse URL e testar novamente, estamos usando nossa janela privada, então, tecnicamente, estamos chegando de novo, nenhuma autenticação ocorreu. Frequentamos cursos, podemos ver os cursos que poderíamos criar novos. E então somos forçados a fazer login ou nos inscrever. Vou usar os mesmos cones que acabamos de criar admin no SEM com uma senha e clicar em Continuar. E eis não há nenhum erro e somos autenticados e redirecionados para nosso pH seguro. Portanto, é bom ver o que pode dar errado e entender porque o OpenID Connect pode exigir um pouco de sutileza para se acostumar. Mas com serviços como o auth zero eliminando muitas das complicações que existem. É bastante fácil começar a usar a autenticação. Agora, o que precisamos fazer é finalizar nossa funcionalidade. Vamos colocar aquela página de perfil ou uma pequena parte aqui que diz que, quando você está logado, você está usando seu endereço de e-mail e mostra um botão de logotipo. E o endereço de e-mail que ele vai para a página de perfil que configuramos. Então é isso que faremos a seguir. 37. Páginas relacionadas com o usuário de configuração: Oi pessoal. Nesta lição, o que queremos fazer é modificar outra barra para que possamos ter nossos botões adicionais. Então, queremos um botão aqui que diga login, logout e um que nos permita ver qual usuário está logado no momento, certo? Então, vamos voltar ao nosso projeto. E o que vou fazer é criar uma nova visão parcial. E o interessante das parciais é que elas podem ser compartilhadas entre várias teses e injetadas, certo? Então, criaremos nossa primeira parcial juntos. Então, vou clicar com o botão direito do mouse e criar um login de sublinhado, HTML CSS de pontos parciais. E neste arquivo vamos fazer algo simples como isso. Então, tudo o que tenho aqui é uma lista não ordenada que tem uma barra de navegação de classe, certo? Então, com o Bootstrap, quando queremos ter barra de navegação à esquerda e uma seção à direita, elas parecem muito diferentes. O que pode acontecer é que possamos estabelecer outro UL e, em seguida, dar a ele a mesma classe, navbar-nav. Mas é claro que nem todas as outras classes como os filmes o crescimento e outras coisas que os conjuntos originais de itens da barra de navegação teriam. Na verdade, isso permitiria que ele ficasse alinhado corretamente ao longo dessa barra de navegação. Então, dentro dessa nova lista não ordenada, vou ter uma declaração if. Estou verificando se a identidade de ponto do usuário que é o usuário autenticado é como um superobjeto que representa o que chamaremos de princípio de reivindicações. Portanto, os aplicativos asp.net Core têm o conceito de um princípio de usuário ou princípio de reivindicações, que é uma combinação de todas as afirmações que discutimos. A presença de todos eles pode ser combinada para nos fornecer um IPL de sprints limpo e, em seguida, o princípio de isenção pode ser dividido em diferentes partes de informação. Então, aqui vemos que a pessoa é o objeto que reivindica o princípio. Tem uma pessoa autenticada? Isso representa uma pessoa autenticada? Está sempre presente, mas sem alegar inflamação, seria como um objeto vazio. Mas isso significaria que a pessoa provavelmente não está autenticada se não tivermos informações. Portanto, podemos confiar nessa declaração if porque tudo isso é configurado durante o fluxo de autenticação que já experimentamos. Se a pessoa for autenticada, quero navegar pelos itens. O primeiro é, e é claro, lembre-se de que temos que ver outro link: primeiro o item de navegação do LaS e , em seguida, a classe é o link de navegação e a luz do hífen de texto. Como estamos usando uma barra de navegação preta , nem precisamos especificar a área. Realmente copiado e colado, mas tudo bem. Vamos ver se vamos acessar a conta e o perfil. E o que estamos mostrando é a identidade do usuário, o nome do ponto. Esse nome é a reivindicação de origem. A ferramenta pode diferenciar as mulheres a partir do princípio de reivindicações que teria sido configurado quando nos autenticamos. Tudo bem, então essa é uma maneira fácil e agradável de saber o nome de usuário. Bem, nesse caso, usá-los como o mesmo endereço de e-mail do usuário autenticado. Então, estamos exibindo isso e, quando clicado, devemos navegar até a página de perfil, que ainda não criamos. Depois, temos o próximo, que é o botão do logotipo. Então, se a pessoa estiver autenticada e quisermos permitir que ela possa sair. Caso contrário, vá em frente e exiba um botão de login, que vai para o controlador de cone e para a ação de login. E, claro, isso os redirecionaria para o serviço de autenticação de terceiros. Agora que temos essa configuração parcial de login, o que precisamos fazer é adicioná-la à barra de navegação no layout dot CSS, HTML. Css. Podemos acrescentar que usamos nesta única linha e é isso que torna parcial. Tão legal. Você pode criar essa seção estática dos sites, a visualização estática e estática em excesso e pode simplesmente injetá-la em qualquer lugar que precisar. Apenas aquela linha aqui, estamos vendo que nome parcial é igual a login parcial, essa obrigação saberá que ela deve procurar seguro qualquer arquivo com esse nome e, em seguida, ele será renderizado aquela seção ali mesmo. Observe que é aqui que a barra de navegação original termina. E depois disso, iniciaremos nossa parcial na qual definimos outra seção da barra de navegação. Então, vamos analisar isso. Então, essa é a aparência do aplicativo. Portanto, temos todos os quatro URLs originais. Eu sei que temos o login à direita. Tudo bem, isso parece bom. Se clicarmos em, o login será exibido aqui. E então podemos prosseguir e autenticação usando o usuário com o qual já nos inscrevemos. E então não, isso me mostrará que estou logado como administrador no SCM e posso sair se clicar em sair, o que isso faz? Isso me registra lá fora. Todos nós sabemos. O que precisamos fazer é configurar essa página de perfil para realmente ir a algum lugar. Porque se eu clicar nesse URL, isso me dará mesmo erro que vimos na primeira vez quando não tínhamos uma visualização. Então, vamos em frente. E configure isso. Tudo bem, então, de volta ao nosso controlador de ícones, temos nossa opção de perfil. E o que estamos fazendo é retornar a visão que deveria existir em algum momento com um tipo novo e o que chamaremos de anônimo. Portanto, esse é um tipo anônimo ou objeto anônimo. Não há uma maneira real de determinar qual tipo de dados está sendo enviado. Você pode ver aqui que é apenas um, é apenas anônimo. O que é um? Então, agora vamos analisar o conceito de um modelo de visualização, certo? Então, vou começar com a criação de uma classe e já temos mais um conceito de modelo de visualização com o modelo de visualização de erros, vou criar um novo arquivo. Vou chamar esse modelo de visualização de perfil de usuário. Em algumas convenções de nomenclatura, você veria as pessoas simplesmente dizerem VM e é um novo arquivo de classe. Então, dot cs, começamos com nosso namespace. E isso é o aplicativo de gerenciamento escolar dot MVC dot models, certo? e vírgula. Então, temos uma classe pública e a chamamos de Modelo de Visualização de Perfil de Usuário. Agora, essa classe terá os diferentes pontos de dados que pretendemos mostrar. E o interessante dos modelos de visualização é que eles são realmente usados para controlar o que mostramos na tela. Esse é um conceito poderoso, especialmente quando queremos parar de mostrar todos os campos de nossas classes de dados nessa tela. Na verdade, criaríamos modelos de visualização específicos para cada visualização e em seguida, tenha uma lógica que converte do modelo de visualização para a classe de dados e vice-versa. Não vou abordar tudo isso neste curso, você pode conferir meu curso, você pode conferir meu curso, concluir o desenvolvimento do asp.net e do Entity Framework Core, onde eu ensino todas essas dinâmicas e abstrações para isso, só queremos começar a trabalhar e entender como podemos criar um aplicativo simples com o mínimo de esforço, certo? Para esse modelo de perfil de usuário, o que vou fazer é definir propriedades que voltarão ao que eu espero enviar do perfil. E deixe-me realmente tentar isso. Eu queria tentar enganar o sistema. Eu vou dizer o modelo de visualização do perfil do usuário aqui. Tudo bem, inclua a referência que falta. E então, é claro, nada disso existe. Então, vou dar uma olhada nisso. Eu posso ver o nome da variável generate, nome da nossa propriedade dentro da classe em que eu gostaria que estivesse. Eu queria fazer isso. E então vamos conferir a aula. E aí vamos nós. É assim que você trapaceia, certo? Em vez de tentar digitar todos manualmente, vou aproveitar a situação obtida. Então, eu quero retornar um novo modelo de visualização. Portanto, é um tipo forte. Agora eu sei exatamente o tipo de dados que está sendo retornado. E então essas são as propriedades que estão lá. Eles não estavam lá antes. Então, permiti que o Visual Studio Code os gerasse para mim. Tudo bem, então, uma vez feito isso, você notará que eles também estão sendo gerados com esses conjuntos internos de anotação, o que significa que isso não pode ser definido de qualquer lugar fora da inicialização, o que é bom para mim. Tudo bem? Então, nesse ponto, retornaremos esse modelo de visualização para essa visualização. Essa visão não existe e não vamos montar andaimes. Temos que fazer isso manualmente. Então, vamos ver as visualizações. E a primeira coisa que precisamos é de uma pasta que retorne ao nosso controlador, certo? Então, as visualizações clicam com o botão direito do mouse, clicam em Novo e então vemos, desculpe , não Novo arquivo, nova pasta, pasta. Aí vamos nós. E então nós o chamamos de cone porque esse é o nome do controlador. Então, dentro de um cone, dentro dessa pasta, agora podemos criar um novo arquivo e eu o chamarei de Profile dot CSS HTML. Por que perfil? Porque o perfil precisa ser mapeado de volta para a ação chamada perfil. Então, já passamos por isso, já fizemos isso com quem e sobre isso. A única coisa, porém, é que também estamos criando nossa própria pasta. Agora, quanto ao conteúdo dessa página, não vou tentar ser criativo. Vou apenas dar uma olhada na amostra. Então, se eu voltar ao painel de gerenciamento totalmente zero, lembre-se de que, quando começamos, poderíamos ter feito o download enquanto sampler visualizava a amostra no GitHub, certo? Alguém para salvar você no GitHub, que lançará o projeto no GitHub. E então, quando eu navego até o início da semana, uma grande amostra de barra de visualização de barra, perfil de barra inicial que CSS HTML. Vamos ver a visão que eles usaram na amostra. Acho que isso é bom o suficiente para começarmos. Tudo bem? Então, queremos esse sexo, quero dizer, você pode pegar a coisa toda para que possamos simplesmente copiar todo o conteúdo. E, é claro, temos que alterar a referência do namespace aqui porque o modelo de visualização do perfil do usuário está em um namespace diferente, mas todo o resto pode permanecer o mesmo. Então, quando essa operação é concluída, é isso que acabamos fazendo, certo? Portanto, nesse arquivo HTML CSS de pontos de perfil, tenho modelo e namespace em relação a onde meu modelo de visualização realmente está. E então eu tenho o mesmo título, então todo o resto é o mesmo. Com tudo isso feito, vou atualizar meu aplicativo e dar uma olhada nele, e é isso que eu recebo. Tudo bem, então esse é o administrador do perfil do usuário no SCM, esse é o endereço de e-mail. E essa seria a foto do perfil vinda da autenticação zero. Então é isso que queremos dizer com limpeza. Essa inflamação ocorreu uma vez, mas toda vez que o usuário se autentica, essa inflamação estará presente nas informações de suas reivindicações. Tudo bem, agora você pode experimentar o encerramento de diferentes partes do seu aplicativo porque tudo gira em torno de segurança. E tudo gira em torno de quem pode fazer o quê e por quê. 38. Retoques finais: Tudo bem, pessoal, então nesta lição vamos limpar um pouco nossa interface de usuário. E vou começar com o layout para pagar. Então, em nosso layout, que é compartilhado, pronto, eu não quero que ninguém que não esteja autenticado veja nenhum desses links. Em primeiro lugar, acho que o link de privacidade não precisa mais estar na barra de navegação. Eu provavelmente gostaria mais de colocar isso. Isso já foi feito aqui no rodapé. Alguém o removeu da navegação superior. Tudo bem, e foi removido o fato de eu não querer nenhum usuário autenticado possa ver a seção de Gestão de cursos, professores e estudantes. Adivinha o que? Posso usar as declarações if que temos na parte de login aqui. Posso ver se o ponto de identidade do usuário está autenticado. Então eu quero essa seção. Então, vou colocar todas essas tags LI dentro dessa declaração if. Isso só mostra como é fácil tornar nossa exibição dinâmica com base no estado autenticado da pessoa. Podemos ocultar as opções do menu e manipulá-las com base no fato de essa pessoa estar ou não logada. E também podemos bloquear alguns de nossos controladores. Então, por exemplo, se realmente não quisermos que ninguém o veja, mas eles ainda conseguissem navegar se soubessem o URL ali mesmo, ainda seriam capazes de dizer uma barra no site cursos reduzem o índice e cheguem lá. Portanto, queremos não apenas bloquear o get, desculpe pela equipe, mas também por cima bloquear tudo aqui. Para o controlador do curso, podemos simplesmente colocar um autor. Comecei na parte superior de todo o controle. Não, ninguém pode chegar perto daqui a menos que esteja autorizado. Tudo bem, então podemos fazer isso com todos os controladores nos quais queremos esse tipo de restrição de bola azul. Então, eu vou fazer isso para o gerenciamento de aulas, e eu posso fazer isso para a matrícula. E, claro, temos que acrescentar que faltam usando declarações. Então, deixe-me voltar às aulas e fazer isso. Aí vamos, podemos sair de casa. E, às vezes, o que você quer fazer é deixar bem explícito que esse controlador em particular pode permitir o anonimato. Então, na verdade, há uma anotação aqui que diz permitir anônimo, o que significa que qualquer coisa que esteja dentro desse controlador, ou se você a colocar acima de uma ação, significa que qualquer pessoa pode acesse esse endereço específico sem precisar de autorização. Essa é a configuração padrão, mas às vezes você quer ser ainda mais explícito. Tudo bem, então autorizaremos e, estudantes, também autorizaremos que não, nenhum acesso não autorizado é permitido a nenhuma dessas rotas nesses controladores. E mesmo assim, mesmo que bloqueássemos todo o controle, mas queríamos que talvez apenas um estivesse acessível, poderíamos facilmente ir acima dele e dizer, olá, Anônimo, eu amo acima do ação, ou seja, e permitir o anonimato. Então, esses artistas são coisas que você pode fazer para controlar o acesso? Eu não coloquei os links adicionais. Você provavelmente já fez isso, então não precisa fazer isso. Mas eu não entrei na aula. Deixe-me ver o manejo da grama aqui. Isso é para o controlador de classes. Tudo bem. E eu não coloquei inscrições, e provavelmente nem preciso colocar inscrições diretamente porque vamos escrever alguns métodos personalizados para as tabelas de inscrições, porque isso é meio que relativo ao gerenciamento de classes. Então eu acho que é uma boa ideia ter isso legal. Então, quando voltarmos, verificaremos se estamos em outro marco. 39. Adicionar ao GitHub: Tudo bem, pessoal, agora que atacamos outro muçulmano, vamos fazer todas as nossas mudanças. Podemos ver a adição de zero e da interface do usuário. Tudo bem? E então podemos nos comprometer e pressionar. E nos vemos na próxima seção.