Eventos
19 de nov., 23 - 21 de nov., 23
Participe de sessões online no Microsoft Ignite criadas para expandir suas habilidades e ajudá-lo a lidar com os problemas complexos de hoje.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 9 deste artigo.
Aviso
Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, consulte a Política de Suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.
Importante
Essas informações relacionam-se ao produto de pré-lançamento, que poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.
Para a versão atual, consulte a versão .NET 9 deste artigo.
O padrão de arquitetura MVC (Model-View-Controller) separa um aplicativo em três componentes principais: Model, View e Controller. O padrão MVC ajuda a criar aplicativos que são mais testáveis e fáceis de atualizar comparado aos aplicativos monolíticos tradicionais.
Os aplicativos baseados no MVC contêm:
Movie
recupera dados de filmes de um banco de dados, fornece-os para a exibição ou atualiza-os. O dados atualizados são gravados em um banco de dados.Em um aplicativo MVC, a exibição exibe apenas informações. O controlador manipula e responde à entrada e interação do usuário. Por exemplo, o controlador manipula os segmentos da URL e os valores de cadeia de consulta e passa esses valores para o modelo. O modelo pode usar esses valores para consultar o banco de dados. Por exemplo:
https://localhost:5001/Home/Privacy
: especifica o controlador Home
e a ação Privacy
.https://localhost:5001/Movies/Edit/5
: é uma solicitação para editar o filme com ID=5 usando o controlador Movies
e a ação Edit
, que são detalhados posteriormente no tutorial.Os dados de rota são explicados posteriormente no tutorial.
O padrão de arquitetura MVC separa um aplicativo em três grupos de componentes principais: Modelos, Exibições e Componentes. Esse padrão ajuda a obter a separação de interesses: a lógica da interface do usuário pertence à exibição. A lógica de entrada pertence ao controlador. A lógica de negócios pertence ao modelo. Essa separação ajuda a gerenciar a complexidade ao criar um aplicativo, porque permite trabalhar em um aspecto da implementação por vez, sem afetar o código de outro. Por exemplo, você pode trabalhar no código de exibição sem depender do código da lógica de negócios.
Esses conceitos são introduzidos e demonstrados nesta série de tutoriais ao criar um aplicativo de filme. O projeto MVC contém pastas para os Controladores e as Exibições.
No Gerenciador de Soluções, clique com o botão direito do mouse em Controladores > Adicionar > Controlador.
Na caixa de diálogo Adicionar Novo Item com Scaffolding, selecione Controlador MVC – Vazio>Adicionar.
Na caixa de diálogo Adicionar Novo Item – MvcMovie, insira HelloWorldController.cs
e selecione Adicionar.
Substitua o conteúdo de Controllers/HelloWorldController.cs
pelo seguinte código:
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers;
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my default action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
Cada método public
em um controlador pode ser chamado como um ponto de extremidade HTTP. Na amostra acima, ambos os métodos retornam uma cadeia de caracteres. Observe os comentários que precedem cada método.
Um ponto de extremidade HTTP:
https://localhost:5001/HelloWorld
.HTTPS
.localhost:5001
.HelloWorld
.O primeiro comentário indica que este é um método HTTP GET invocado por meio do acréscimo de /HelloWorld/
à URL base.
O primeiro comentário especifica um método HTTP GET invocado por meio do acréscimo de /HelloWorld/Welcome/
à URL base. Mais adiante no tutorial, o mecanismo de scaffolding será usado para gerar métodos HTTP POST
que atualizam dados.
Execute o aplicativo sem o depurador pressionando Ctrl+F5 (Windows) ou ⌘+F5 (macOS).
Acrescente /HelloWorld
ao caminho na barra de endereços. O método Index
retorna uma cadeia de caracteres.
O MVC invoca as classes do controlador e os métodos de ação dentro delas, dependendo da URL de entrada. A lógica de roteamento de URL padrão usada pelo MVC usa um formato como este para determinar o código a ser invocado:
/[Controller]/[ActionName]/[Parameters]
O formato de roteamento é definido no arquivo Program.cs
.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
Quando você acessa o aplicativo e não fornece nenhum segmento de URL, ele usa como padrão o controlador “Home” e o método “Index” especificado na linha do modelo realçada acima. Nos segmentos de URL anteriores:
localhost:5001/HelloWorld
mapeia para a classe HelloWorldController.localhost:5001/HelloWorld/Index
faz com que o método Index
da classe HelloWorldController
seja executado. Observe que você precisou apenas navegar para localhost:5001/HelloWorld
e o método Index
foi chamado por padrão. Index
é o método padrão que será chamado em um controlador se não houver um nome de método explicitamente especificado.id
) refere-se aos dados de rota. Os dados de rota são explicados posteriormente no tutorial.Procure: https://localhost:{PORT}/HelloWorld/Welcome
. Substitua {PORT}
pelo número da porta.
O método Welcome
é executado e retorna a cadeia de caracteres This is the Welcome action method...
. Para essa URL, o controlador é HelloWorld
e Welcome
é o método de ação. Você ainda não usou a parte [Parameters]
da URL.
Modifique o código para passar algumas informações de parâmetro da URL para o controlador. Por exemplo, /HelloWorld/Welcome?name=Rick&numtimes=4
.
Altere o método Welcome
para incluir dois parâmetros, conforme mostrado no código a seguir.
// GET: /HelloWorld/Welcome/
// Requires using System.Text.Encodings.Web;
public string Welcome(string name, int numTimes = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}
O código anterior:
numTimes
usa 1 como padrão se nenhum valor é passado para esse parâmetro.HtmlEncoder.Default.Encode
para proteger o aplicativo contra entrada mal-intencionada, como através de JavaScript.$"Hello {name}, NumTimes is: {numTimes}"
.Execute o aplicativo e navegue até: https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4
. Substitua {PORT}
pelo número da porta.
Experimente valores diferentes para name
e numtimes
na URL. O sistema de model binding do MVC mapeia automaticamente os parâmetros nomeados da cadeia de consulta para os parâmetros no método. Consulte Model binding para obter mais informações.
Na imagem anterior:
Parameters
não é usado.name
e numTimes
são passados na cadeia de caracteres de consulta.?
(ponto de interrogação) na URL acima é um separador seguido pela cadeia de consulta.&
separa os pares campo-valor.Substitua o método Welcome
pelo seguinte código:
public string Welcome(string name, int ID = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
}
Execute o aplicativo e insira a seguinte URL: https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick
Na URL anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita inicia a cadeia de caracteres de consulta.app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
No exemplo anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita (em id?
) indica que o parâmetro id
é opcional.O padrão de arquitetura MVC (Model-View-Controller) separa um aplicativo em três componentes principais: Model, View e Controller. O padrão MVC ajuda a criar aplicativos que são mais testáveis e fáceis de atualizar comparado aos aplicativos monolíticos tradicionais.
Os aplicativos baseados no MVC contêm:
Movie
recupera dados de filmes de um banco de dados, fornece-os para a exibição ou atualiza-os. O dados atualizados são gravados em um banco de dados.Em um aplicativo MVC, a exibição exibe apenas informações. O controlador manipula e responde à entrada e interação do usuário. Por exemplo, o controlador manipula os segmentos da URL e os valores de cadeia de consulta e passa esses valores para o modelo. O modelo pode usar esses valores para consultar o banco de dados. Por exemplo:
https://localhost:5001/Home/Privacy
: especifica o controlador Home
e a ação Privacy
.https://localhost:5001/Movies/Edit/5
: é uma solicitação para editar o filme com ID=5 usando o controlador Movies
e a ação Edit
, que são detalhados posteriormente no tutorial.Os dados de rota são explicados posteriormente no tutorial.
O padrão de arquitetura MVC separa um aplicativo em três grupos de componentes principais: Modelos, Exibições e Componentes. Esse padrão ajuda a obter a separação de interesses: a lógica da interface do usuário pertence à exibição. A lógica de entrada pertence ao controlador. A lógica de negócios pertence ao modelo. Essa separação ajuda a gerenciar a complexidade ao criar um aplicativo, porque permite trabalhar em um aspecto da implementação por vez, sem afetar o código de outro. Por exemplo, você pode trabalhar no código de exibição sem depender do código da lógica de negócios.
Esses conceitos são introduzidos e demonstrados nesta série de tutoriais ao criar um aplicativo de filme. O projeto MVC contém pastas para os Controladores e as Exibições.
No Gerenciador de Soluções, clique com o botão direito do mouse em Controladores > Adicionar > Controlador.
Na caixa de diálogo Adicionar Novo Item com Scaffolding, selecione Controlador MVC – Vazio>Adicionar.
Na caixa de diálogo Adicionar Novo Item – MvcMovie, insira HelloWorldController.cs
e selecione Adicionar.
Substitua o conteúdo de Controllers/HelloWorldController.cs
pelo seguinte código:
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers;
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my default action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
Cada método public
em um controlador pode ser chamado como um ponto de extremidade HTTP. Na amostra acima, ambos os métodos retornam uma cadeia de caracteres. Observe os comentários que precedem cada método.
Um ponto de extremidade HTTP:
https://localhost:5001/HelloWorld
.HTTPS
.localhost:5001
.HelloWorld
.O primeiro comentário indica que este é um método HTTP GET invocado por meio do acréscimo de /HelloWorld/
à URL base.
O primeiro comentário especifica um método HTTP GET invocado por meio do acréscimo de /HelloWorld/Welcome/
à URL base. Mais adiante no tutorial, o mecanismo de scaffolding será usado para gerar métodos HTTP POST
que atualizam dados.
Execute o aplicativo sem o depurador pressionando Ctrl+F5 (Windows) ou ⌘+F5 (macOS).
Acrescente /HelloWorld
ao caminho na barra de endereços. O método Index
retorna uma cadeia de caracteres.
O MVC invoca as classes do controlador e os métodos de ação dentro delas, dependendo da URL de entrada. A lógica de roteamento de URL padrão usada pelo MVC usa um formato como este para determinar o código a ser invocado:
/[Controller]/[ActionName]/[Parameters]
O formato de roteamento é definido no arquivo Program.cs
.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
Quando você acessa o aplicativo e não fornece nenhum segmento de URL, ele usa como padrão o controlador “Home” e o método “Index” especificado na linha do modelo realçada acima. Nos segmentos de URL anteriores:
localhost:5001/HelloWorld
mapeia para a classe HelloWorldController.localhost:5001/HelloWorld/Index
faz com que o método Index
da classe HelloWorldController
seja executado. Observe que você precisou apenas navegar para localhost:5001/HelloWorld
e o método Index
foi chamado por padrão. Index
é o método padrão que será chamado em um controlador se não houver um nome de método explicitamente especificado.id
) refere-se aos dados de rota. Os dados de rota são explicados posteriormente no tutorial.Procure: https://localhost:{PORT}/HelloWorld/Welcome
. Substitua {PORT}
pelo número da porta.
O método Welcome
é executado e retorna a cadeia de caracteres This is the Welcome action method...
. Para essa URL, o controlador é HelloWorld
e Welcome
é o método de ação. Você ainda não usou a parte [Parameters]
da URL.
Modifique o código para passar algumas informações de parâmetro da URL para o controlador. Por exemplo, /HelloWorld/Welcome?name=Rick&numtimes=4
.
Altere o método Welcome
para incluir dois parâmetros, conforme mostrado no código a seguir.
// GET: /HelloWorld/Welcome/
// Requires using System.Text.Encodings.Web;
public string Welcome(string name, int numTimes = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}
O código anterior:
numTimes
usa 1 como padrão se nenhum valor é passado para esse parâmetro.HtmlEncoder.Default.Encode
para proteger o aplicativo contra entrada mal-intencionada, como através de JavaScript.$"Hello {name}, NumTimes is: {numTimes}"
.Execute o aplicativo e navegue até: https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4
. Substitua {PORT}
pelo número da porta.
Experimente valores diferentes para name
e numtimes
na URL. O sistema de model binding do MVC mapeia automaticamente os parâmetros nomeados da cadeia de consulta para os parâmetros no método. Consulte Model binding para obter mais informações.
Na imagem anterior:
Parameters
não é usado.name
e numTimes
são passados na cadeia de caracteres de consulta.?
(ponto de interrogação) na URL acima é um separador seguido pela cadeia de consulta.&
separa os pares campo-valor.Substitua o método Welcome
pelo seguinte código:
public string Welcome(string name, int ID = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
}
Execute o aplicativo e insira a seguinte URL: https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick
Na URL anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita inicia a cadeia de caracteres de consulta.app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
No exemplo anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita (em id?
) indica que o parâmetro id
é opcional.O padrão de arquitetura MVC (Model-View-Controller) separa um aplicativo em três componentes principais: Model, View e Controller. O padrão MVC ajuda a criar aplicativos que são mais testáveis e fáceis de atualizar comparado aos aplicativos monolíticos tradicionais.
Os aplicativos baseados no MVC contêm:
Movie
recupera dados de filmes de um banco de dados, fornece-os para a exibição ou atualiza-os. O dados atualizados são gravados em um banco de dados.Em um aplicativo MVC, a exibição exibe apenas informações. O controlador manipula e responde à entrada e interação do usuário. Por exemplo, o controlador manipula os segmentos da URL e os valores de cadeia de consulta e passa esses valores para o modelo. O modelo pode usar esses valores para consultar o banco de dados. Por exemplo:
https://localhost:5001/Home/Privacy
: especifica o controlador Home
e a ação Privacy
.https://localhost:5001/Movies/Edit/5
: é uma solicitação para editar o filme com ID=5 usando o controlador Movies
e a ação Edit
, que são detalhados posteriormente no tutorial.Os dados de rota são explicados posteriormente no tutorial.
O padrão de arquitetura MVC separa um aplicativo em três grupos de componentes principais: Modelos, Exibições e Componentes. Esse padrão ajuda a obter a separação de interesses: a lógica da interface do usuário pertence à exibição. A lógica de entrada pertence ao controlador. A lógica de negócios pertence ao modelo. Essa separação ajuda a gerenciar a complexidade ao criar um aplicativo, porque permite trabalhar em um aspecto da implementação por vez, sem afetar o código de outro. Por exemplo, você pode trabalhar no código de exibição sem depender do código da lógica de negócios.
Esses conceitos são introduzidos e demonstrados nesta série de tutoriais ao criar um aplicativo de filme. O projeto MVC contém pastas para os Controladores e as Exibições.
No Gerenciador de Soluções, clique com o botão direito do mouse em Controladores > Adicionar > Controlador.
Na caixa de diálogo Adicionar Novo Item com Scaffolding, selecione Controlador MVC – Vazio>Adicionar.
Na caixa de diálogo Adicionar Novo Item – MvcMovie, insira HelloWorldController.cs
e selecione Adicionar.
Substitua o conteúdo de Controllers/HelloWorldController.cs
pelo seguinte código:
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers;
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my default action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
Cada método public
em um controlador pode ser chamado como um ponto de extremidade HTTP. Na amostra acima, ambos os métodos retornam uma cadeia de caracteres. Observe os comentários que precedem cada método.
Um ponto de extremidade HTTP:
https://localhost:5001/HelloWorld
.HTTPS
.localhost:5001
.HelloWorld
.O primeiro comentário indica que este é um método HTTP GET invocado por meio do acréscimo de /HelloWorld/
à URL base.
O primeiro comentário especifica um método HTTP GET invocado por meio do acréscimo de /HelloWorld/Welcome/
à URL base. Mais adiante no tutorial, o mecanismo de scaffolding será usado para gerar métodos HTTP POST
que atualizam dados.
Execute o aplicativo sem o depurador pressionando Ctrl+F5 (Windows) ou ⌘+F5 (macOS).
Acrescente /HelloWorld
ao caminho na barra de endereços. O método Index
retorna uma cadeia de caracteres.
O MVC invoca as classes do controlador e os métodos de ação dentro delas, dependendo da URL de entrada. A lógica de roteamento de URL padrão usada pelo MVC usa um formato como este para determinar o código a ser invocado:
/[Controller]/[ActionName]/[Parameters]
O formato de roteamento é definido no arquivo Program.cs
.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
Quando você acessa o aplicativo e não fornece nenhum segmento de URL, ele usa como padrão o controlador “Home” e o método “Index” especificado na linha do modelo realçada acima. Nos segmentos de URL anteriores:
localhost:5001/HelloWorld
mapeia para a classe HelloWorldController.localhost:5001/HelloWorld/Index
faz com que o método Index
da classe HelloWorldController
seja executado. Observe que você precisou apenas navegar para localhost:5001/HelloWorld
e o método Index
foi chamado por padrão. Index
é o método padrão que será chamado em um controlador se não houver um nome de método explicitamente especificado.id
) refere-se aos dados de rota. Os dados de rota são explicados posteriormente no tutorial.Procure: https://localhost:{PORT}/HelloWorld/Welcome
. Substitua {PORT}
pelo número da porta.
O método Welcome
é executado e retorna a cadeia de caracteres This is the Welcome action method...
. Para essa URL, o controlador é HelloWorld
e Welcome
é o método de ação. Você ainda não usou a parte [Parameters]
da URL.
Modifique o código para passar algumas informações de parâmetro da URL para o controlador. Por exemplo, /HelloWorld/Welcome?name=Rick&numtimes=4
.
Altere o método Welcome
para incluir dois parâmetros, conforme mostrado no código a seguir.
// GET: /HelloWorld/Welcome/
// Requires using System.Text.Encodings.Web;
public string Welcome(string name, int numTimes = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}
O código anterior:
numTimes
usa 1 como padrão se nenhum valor é passado para esse parâmetro.HtmlEncoder.Default.Encode
para proteger o aplicativo contra entrada mal-intencionada, como através de JavaScript.$"Hello {name}, NumTimes is: {numTimes}"
.Execute o aplicativo e navegue até: https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4
. Substitua {PORT}
pelo número da porta.
Experimente valores diferentes para name
e numtimes
na URL. O sistema de model binding do MVC mapeia automaticamente os parâmetros nomeados da cadeia de consulta para os parâmetros no método. Consulte Model binding para obter mais informações.
Na imagem anterior:
Parameters
não é usado.name
e numTimes
são passados na cadeia de caracteres de consulta.?
(ponto de interrogação) na URL acima é um separador seguido pela cadeia de consulta.&
separa os pares campo-valor.Substitua o método Welcome
pelo seguinte código:
public string Welcome(string name, int ID = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
}
Execute o aplicativo e insira a seguinte URL: https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick
Na URL anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita inicia a cadeia de caracteres de consulta.app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
No exemplo anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita (em id?
) indica que o parâmetro id
é opcional.O padrão de arquitetura MVC (Model-View-Controller) separa um aplicativo em três componentes principais: Model, View e Controller. O padrão MVC ajuda a criar aplicativos que são mais testáveis e fáceis de atualizar comparado aos aplicativos monolíticos tradicionais.
Os aplicativos baseados no MVC contêm:
Movie
recupera dados de filmes de um banco de dados, fornece-os para a exibição ou atualiza-os. O dados atualizados são gravados em um banco de dados.Em um aplicativo MVC, a exibição exibe apenas informações. O controlador manipula e responde à entrada e interação do usuário. Por exemplo, o controlador manipula os segmentos da URL e os valores de cadeia de consulta e passa esses valores para o modelo. O modelo pode usar esses valores para consultar o banco de dados. Por exemplo:
https://localhost:5001/Home/Privacy
: especifica o controlador Home
e a ação Privacy
.https://localhost:5001/Movies/Edit/5
: é uma solicitação para editar o filme com ID=5 usando o controlador Movies
e a ação Edit
, que são detalhados posteriormente no tutorial.Os dados de rota são explicados posteriormente no tutorial.
O padrão de arquitetura MVC separa um aplicativo em três grupos de componentes principais: Modelos, Exibições e Componentes. Esse padrão ajuda a obter a separação de interesses: a lógica da interface do usuário pertence à exibição. A lógica de entrada pertence ao controlador. A lógica de negócios pertence ao modelo. Essa separação ajuda a gerenciar a complexidade ao criar um aplicativo, porque permite trabalhar em um aspecto da implementação por vez, sem afetar o código de outro. Por exemplo, você pode trabalhar no código de exibição sem depender do código da lógica de negócios.
Esses conceitos são introduzidos e demonstrados nesta série de tutoriais ao criar um aplicativo de filme. O projeto MVC contém pastas para os Controladores e as Exibições.
No Gerenciador de Soluções, clique com o botão direito do mouse em Controladores > Adicionar > Controlador.
Na caixa de diálogo Adicionar Novo Item com Scaffolding, selecione Controlador MVC – Vazio>Adicionar.
Na caixa de diálogo Adicionar Novo Item – MvcMovie, insira HelloWorldController.cs
e selecione Adicionar.
Substitua o conteúdo de Controllers/HelloWorldController.cs
pelo seguinte código:
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my default action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
Cada método public
em um controlador pode ser chamado como um ponto de extremidade HTTP. Na amostra acima, ambos os métodos retornam uma cadeia de caracteres. Observe os comentários que precedem cada método.
Um ponto de extremidade HTTP:
https://localhost:5001/HelloWorld
.HTTPS
.localhost:5001
.HelloWorld
.O primeiro comentário indica que este é um método HTTP GET invocado por meio do acréscimo de /HelloWorld/
à URL base.
O primeiro comentário especifica um método HTTP GET invocado por meio do acréscimo de /HelloWorld/Welcome/
à URL base. Mais adiante no tutorial, o mecanismo de scaffolding será usado para gerar métodos HTTP POST
que atualizam dados.
Execute o aplicativo sem o depurador.
Acrescente "HelloWorld" ao caminho na barra de endereços. O método Index
retorna uma cadeia de caracteres.
O MVC invoca as classes do controlador e os métodos de ação dentro delas, dependendo da URL de entrada. A lógica de roteamento de URL padrão usada pelo MVC usa um formato como este para determinar o código a ser invocado:
/[Controller]/[ActionName]/[Parameters]
O formato de roteamento é definido no arquivo Program.cs
.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
Quando você acessa o aplicativo e não fornece nenhum segmento de URL, ele usa como padrão o controlador “Home” e o método “Index” especificado na linha do modelo realçada acima. Nos segmentos de URL anteriores:
localhost:5001/HelloWorld
mapeia para a classe HelloWorldController.localhost:5001/HelloWorld/Index
faz com que o método Index
da classe HelloWorldController
seja executado. Observe que você precisou apenas navegar para localhost:5001/HelloWorld
e o método Index
foi chamado por padrão. Index
é o método padrão que será chamado em um controlador se não houver um nome de método explicitamente especificado.id
) refere-se aos dados de rota. Os dados de rota são explicados posteriormente no tutorial.Procure: https://localhost:{PORT}/HelloWorld/Welcome
. Substitua {PORT}
pelo número da porta.
O método Welcome
é executado e retorna a cadeia de caracteres This is the Welcome action method...
. Para essa URL, o controlador é HelloWorld
e Welcome
é o método de ação. Você ainda não usou a parte [Parameters]
da URL.
Modifique o código para passar algumas informações de parâmetro da URL para o controlador. Por exemplo, /HelloWorld/Welcome?name=Rick&numtimes=4
.
Altere o método Welcome
para incluir dois parâmetros, conforme mostrado no código a seguir.
// GET: /HelloWorld/Welcome/
// Requires using System.Text.Encodings.Web;
public string Welcome(string name, int numTimes = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}
O código anterior:
numTimes
usa 1 como padrão se nenhum valor é passado para esse parâmetro.HtmlEncoder.Default.Encode
para proteger o aplicativo contra entrada mal-intencionada, como através de JavaScript.$"Hello {name}, NumTimes is: {numTimes}"
.Execute o aplicativo e navegue até: https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4
. Substitua {PORT}
pelo número da porta.
Experimente valores diferentes para name
e numtimes
na URL. O sistema de model binding do MVC mapeia automaticamente os parâmetros nomeados da cadeia de consulta para os parâmetros no método. Consulte Model binding para obter mais informações.
Na imagem anterior:
Parameters
não é usado.name
e numTimes
são passados na cadeia de caracteres de consulta.?
(ponto de interrogação) na URL acima é um separador seguido pela cadeia de consulta.&
separa os pares campo-valor.Substitua o método Welcome
pelo seguinte código:
public string Welcome(string name, int ID = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
}
Execute o aplicativo e insira a seguinte URL: https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick
Na URL anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita inicia a cadeia de caracteres de consulta.app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
No exemplo anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita (em id?
) indica que o parâmetro id
é opcional.O padrão de arquitetura MVC (Model-View-Controller) separa um aplicativo em três componentes principais: Model, View e Controller. O padrão MVC ajuda a criar aplicativos que são mais testáveis e fáceis de atualizar comparado aos aplicativos monolíticos tradicionais.
Os aplicativos baseados no MVC contêm:
Movie
recupera dados de filmes de um banco de dados, fornece-os para a exibição ou atualiza-os. O dados atualizados são gravados em um banco de dados.Em um aplicativo MVC, a exibição exibe apenas informações. O controlador manipula e responde à entrada e interação do usuário. Por exemplo, o controlador manipula os segmentos da URL e os valores de cadeia de consulta e passa esses valores para o modelo. O modelo pode usar esses valores para consultar o banco de dados. Por exemplo:
https://localhost:5001/Home/Privacy
: especifica o controlador Home
e a ação Privacy
.https://localhost:5001/Movies/Edit/5
: é uma solicitação para editar o filme com ID=5 usando o controlador Movies
e a ação Edit
, que são detalhados posteriormente no tutorial.Os dados de rota são explicados posteriormente no tutorial.
O padrão de arquitetura MVC separa um aplicativo em três grupos de componentes principais: Modelos, Exibições e Componentes. Esse padrão ajuda a obter a separação de interesses: a lógica da interface do usuário pertence à exibição. A lógica de entrada pertence ao controlador. A lógica de negócios pertence ao modelo. Essa separação ajuda a gerenciar a complexidade ao criar um aplicativo, porque permite trabalhar em um aspecto da implementação por vez, sem afetar o código de outro. Por exemplo, você pode trabalhar no código de exibição sem depender do código da lógica de negócios.
Esses conceitos são introduzidos e demonstrados nesta série de tutoriais ao criar um aplicativo de filme. O projeto MVC contém pastas para os Controladores e as Exibições.
No Gerenciador de Soluções, clique com o botão direito do mouse em Controladores > Adicionar > Controlador.
Na caixa de diálogo Adicionar Scaffold, selecione Controlador MVC – Vazio.
Na caixa de diálogo Adicionar Novo Item – MvcMovie, insira HelloWorldController.cs
e selecione Adicionar.
Substitua o conteúdo de Controllers/HelloWorldController.cs
pelo fornecido a seguir:
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my default action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
Cada método public
em um controlador pode ser chamado como um ponto de extremidade HTTP. Na amostra acima, ambos os métodos retornam uma cadeia de caracteres. Observe os comentários que precedem cada método.
Um ponto de extremidade HTTP:
https://localhost:5001/HelloWorld
.HTTPS
.localhost:5001
.HelloWorld
.O primeiro comentário indica que este é um método HTTP GET invocado por meio do acréscimo de /HelloWorld/
à URL base.
O primeiro comentário especifica um método HTTP GET invocado por meio do acréscimo de /HelloWorld/Welcome/
à URL base. Mais adiante no tutorial, o mecanismo de scaffolding será usado para gerar métodos HTTP POST
que atualizam dados.
Execute o aplicativo sem o depurador.
Acrescente "HelloWorld" ao caminho na barra de endereços. O método Index
retorna uma cadeia de caracteres.
O MVC invoca as classes do controlador e os métodos de ação dentro delas, dependendo da URL de entrada. A lógica de roteamento de URL padrão usada pelo MVC usa um formato como este para determinar o código a ser invocado:
/[Controller]/[ActionName]/[Parameters]
O formato de roteamento é definido no método Configure
no arquivo Startup.cs
.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Quando você acessa o aplicativo e não fornece nenhum segmento de URL, ele usa como padrão o controlador “Home” e o método “Index” especificado na linha do modelo realçada acima. Nos segmentos de URL anteriores:
localhost:5001/HelloWorld
mapeia para a classe HelloWorldController.localhost:5001/HelloWorld/Index
faz com que o método Index
da classe HelloWorldController
seja executado. Observe que você precisou apenas navegar para localhost:5001/HelloWorld
e o método Index
foi chamado por padrão. Index
é o método padrão que será chamado em um controlador se não houver um nome de método explicitamente especificado.id
) refere-se aos dados de rota. Os dados de rota são explicados posteriormente no tutorial.Procure: https://localhost:{PORT}/HelloWorld/Welcome
. Substitua {PORT}
pelo número da porta.
O método Welcome
é executado e retorna a cadeia de caracteres This is the Welcome action method...
. Para essa URL, o controlador é HelloWorld
e Welcome
é o método de ação. Você ainda não usou a parte [Parameters]
da URL.
Modifique o código para passar algumas informações de parâmetro da URL para o controlador. Por exemplo, /HelloWorld/Welcome?name=Rick&numtimes=4
.
Altere o método Welcome
para incluir dois parâmetros, conforme mostrado no código a seguir.
// GET: /HelloWorld/Welcome/
// Requires using System.Text.Encodings.Web;
public string Welcome(string name, int numTimes = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}
O código anterior:
numTimes
usa 1 como padrão se nenhum valor é passado para esse parâmetro.HtmlEncoder.Default.Encode
para proteger o aplicativo contra entrada mal-intencionada, como através de JavaScript.$"Hello {name}, NumTimes is: {numTimes}"
.Execute o aplicativo e navegue até: https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4
. Substitua {PORT}
pelo número da porta.
Experimente valores diferentes para name
e numtimes
na URL. O sistema de model binding do MVC mapeia automaticamente os parâmetros nomeados da cadeia de consulta para os parâmetros no método. Consulte Model binding para obter mais informações.
Na imagem anterior:
Parameters
não é usado.name
e numTimes
são passados na cadeia de caracteres de consulta.?
(ponto de interrogação) na URL acima é um separador seguido pela cadeia de consulta.&
separa os pares campo-valor.Substitua o método Welcome
pelo seguinte código:
public string Welcome(string name, int ID = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
}
Execute o aplicativo e insira a seguinte URL: https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick
Na URL anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita inicia a cadeia de caracteres de consulta.app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
No exemplo anterior:
id
.Welcome
contém um parâmetro id
que correspondeu ao modelo de URL no método MapControllerRoute
.?
à direita (em id?
) indica que o parâmetro id
é opcional.Comentários do ASP.NET Core
O ASP.NET Core é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
19 de nov., 23 - 21 de nov., 23
Participe de sessões online no Microsoft Ignite criadas para expandir suas habilidades e ajudá-lo a lidar com os problemas complexos de hoje.
Registrar agora