ASP.Net MVC - POST

Nesta aula iremos aprender a criar um formulário em HTML e mandar os dados via POST para um sistema em ASP.Net MVC.

assinaturaAssine nossa Comunidade

Asp Net MVC - Post

O objetivo da aula de hoje é fazer um formulário e começar a gravar os dados diretamente na base de dados.

Primeiro vamos utilizar algumas técnicas do HTML para criarmos um formulário simples, com o nome, conteudo, como um textArea e data. Criar um botão chamado ok para que possamos enviar os dados para o servidor e gravar os dados na base de dados, retornando esse dado já escrito e assim nós retornaremos esse registro na view.

Então vamos criar uma nova rota para fazer o cadastro e renderizar a View e também criar novo controller chamado Paginas.

      
        namespace MVC_GerenciadorDeConteudo.Controllers
        {
          public class PaginasController : Controller 

            public ActionResult Index()
            {
              ViewBag.Paginas = new Pagina().Lista();
              return View();
            }

            public ActionResult Novo()
            {
              return View();
            }
        }
       
    

Faremos um link HTML para que possamos ir para o cadastro de páginas.

      
        @{
          ViewBag.Title = "home Page";
          List< Business.Pagina> paginas = ViewBag.Paginas;
        }
 
      < div class = "jumbotron">
        < h1>Paginas < /h1>
        < div>
          < a href="/paginas/novo" class = "btn btn-default"> Nova pagina < /a>
        < /div
        < table class = "table"> 
          < tr> 
            < td>Id < /td>
            < td>Nome < /td>
            < td>Data < /td>
          < /tr>

          @foreach (var p paginas) 
          {
            < tr> 
              < td>@p.Id < /td>
              < td>@p.Nome < /td>
              < td>@p.Data < /td>
          < /tr>

          }

        < /table> 

      < /div>

      
    

No arquivo de rotas teremos as rotas de paginas, a Index e Novo

      

      routes.MapRoute(
        "paginas",
        "paginas",
        new { controller = "Paginas", action = "Index" }
      );

      routes.MapRoute(
        "paginas_novo",
        "npaginas/novo",
        new { controller = "Paginas", action = "Novo" }
      );

       routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );
       
    

Criaremos um novo formulário no arquivo novo.cshtml:

No arquivo de rotas inserimos a nova rota chamada paginas_criar

      

      routes.MapRoute(
        "paginas_criar",
        "npaginas/criar",
        new { controller = "Paginas", action = "Criar" }
      );

       routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );
       
    

Em PaginasController, vamos criar o método Criar e a assinatura como [HttpPost].

Nesta caso, ao invés de termos um ActionResult, colocaremos o método como void, ou seja, não precisamos de retorno e, assim que terminar a ação, daremos um redirect para /paginas.

      
        namespace MVC_GerenciadorDeConteudo.Controllers
        {
          public class PaginasController : Controller 

            public ActionResult Index()
            {
              ViewBag.Paginas = new Pagina().Lista();
              return View();
            }

            public ActionResult Novo()
            {
              return View();
            }

            [HttpPost]
            public void Criar()
            {
              DateTime data;
              DateTime.TryParse(Request["data"],out data);
              var pagina = new Pagina();
              pagina.Nome =  Request["nome"];
              pagina.Data = Request["nome"];
              pagina.Conteudo = Request["nome"];
              pagina.save();
              Response.Redirect("/paginas");
            }
        }
       
    

Na classe Business, vamos criar o método Save, que irá chamar o método Salvar na classe Database.

      
        namespace Business
        {
          public class Pagina
          {
            public int Id { get;set };
            public string Nome { get;set };
            public string Conteudo { get;set };
            public DateTime Data { get;set };
  
          }

          public List< Pagina> Lista()
          {
            var lista = new List< Pagina();
            var paginaDb = Database.Pagina()
            foreach(DataRow row in paginaDb.Lista().Rows)
            {
              var pagina = new Produto();
              pagina.Id = Convert.ToInt32(row["id"]);
              pagina.Nome = row["nome"].ToString();
              pagina.Conteudo = row["conteudo"].ToString();
              pagina.Data = Convert.ToDateTime(row["data"]);
              lista.Add(pagina);
            }
            return lista;
          }

          public void Save() 
          {
            new Database.Pagina().Salvar(this.Id, this.Nome, this.Conteudo, this.Data);
          }
        } 
      
    

Na classe Database criaremos o método Salvar, para gravar as informações no banco de dados.

    
      namespace Database
      {
        public class Pagina
        {
          private string sqlConn() 
          {
            return ConfigurationManager,AppSettings["SqlConn"];
          }

          public DataTable Lista() 
          {
            using (SqlConnection connection = new SqlConnection(SqlConn()))
            {

              string queryString = "select * from paginas";
              SqlCommand command = new SqlCommand(queryString, connection);
              command.Connection.Open();
              
              SqlDataAdapter adapter = new SqlDataAdapter();
              adapter.SelectCommand = command;

              DataTable table = new DataTable();
              adapter.Fill(table);
              return table;

            }
          }

          public void Salvar(int id, string nome, string conteudo, DateTime data) 
          {
            using (SqlConnection connection = new SqlConnection(connectionString))

            {

              string queryString = "insert into paginas(nome, data,conteudo) values 
                        ('"+nome +"','"+ data.ToString("yyyy-mm-dd hh:mm:ssss") +"','"+ conteudo +"')";
              if (id !=0)
              {
                queryString = "update paginas set nome = '"+ nome +"', data = '" +  
                        data.ToString("yyyy-mm-dd hh:mm:ssss") + "',conteudo = '"+ conteudo +"' where id = " + id;
              }
              
              SqlCommand command = new SqlCommand(queryString, connection);
              command.Connection.Open();
              command.ExecuteNonQuery();
            }
          }


        }
      }
     
   

ASP.Net MVC - POST

Nesta aula iremos aprender a criar um formulário em HTML e mandar os dados via POST para um sistema em ASP.Net MVC.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Asp Net MVC - Post

O objetivo da aula de hoje é fazer um formulário e começar a gravar os dados diretamente na base de dados.

Primeiro vamos utilizar algumas técnicas do HTML para criarmos um formulário simples, com o nome, conteudo, como um textArea e data. Criar um botão chamado ok para que possamos enviar os dados para o servidor e gravar os dados na base de dados, retornando esse dado já escrito e assim nós retornaremos esse registro na view.

Então vamos criar uma nova rota para fazer o cadastro e renderizar a View e também criar novo controller chamado Paginas.

      
        namespace MVC_GerenciadorDeConteudo.Controllers
        {
          public class PaginasController : Controller 

            public ActionResult Index()
            {
              ViewBag.Paginas = new Pagina().Lista();
              return View();
            }

            public ActionResult Novo()
            {
              return View();
            }
        }
       
    

Faremos um link HTML para que possamos ir para o cadastro de páginas.

      
        @{
          ViewBag.Title = "home Page";
          List< Business.Pagina> paginas = ViewBag.Paginas;
        }
 
      < div class = "jumbotron">
        < h1>Paginas < /h1>
        < div>
          < a href="/paginas/novo" class = "btn btn-default"> Nova pagina < /a>
        < /div
        < table class = "table"> 
          < tr> 
            < td>Id < /td>
            < td>Nome < /td>
            < td>Data < /td>
          < /tr>

          @foreach (var p paginas) 
          {
            < tr> 
              < td>@p.Id < /td>
              < td>@p.Nome < /td>
              < td>@p.Data < /td>
          < /tr>

          }

        < /table> 

      < /div>

      
    

No arquivo de rotas teremos as rotas de paginas, a Index e Novo

      

      routes.MapRoute(
        "paginas",
        "paginas",
        new { controller = "Paginas", action = "Index" }
      );

      routes.MapRoute(
        "paginas_novo",
        "npaginas/novo",
        new { controller = "Paginas", action = "Novo" }
      );

       routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );
       
    

Criaremos um novo formulário no arquivo novo.cshtml:

No arquivo de rotas inserimos a nova rota chamada paginas_criar

      

      routes.MapRoute(
        "paginas_criar",
        "npaginas/criar",
        new { controller = "Paginas", action = "Criar" }
      );

       routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );
       
    

Em PaginasController, vamos criar o método Criar e a assinatura como [HttpPost].

Nesta caso, ao invés de termos um ActionResult, colocaremos o método como void, ou seja, não precisamos de retorno e, assim que terminar a ação, daremos um redirect para /paginas.

      
        namespace MVC_GerenciadorDeConteudo.Controllers
        {
          public class PaginasController : Controller 

            public ActionResult Index()
            {
              ViewBag.Paginas = new Pagina().Lista();
              return View();
            }

            public ActionResult Novo()
            {
              return View();
            }

            [HttpPost]
            public void Criar()
            {
              DateTime data;
              DateTime.TryParse(Request["data"],out data);
              var pagina = new Pagina();
              pagina.Nome =  Request["nome"];
              pagina.Data = Request["nome"];
              pagina.Conteudo = Request["nome"];
              pagina.save();
              Response.Redirect("/paginas");
            }
        }
       
    

Na classe Business, vamos criar o método Save, que irá chamar o método Salvar na classe Database.

      
        namespace Business
        {
          public class Pagina
          {
            public int Id { get;set };
            public string Nome { get;set };
            public string Conteudo { get;set };
            public DateTime Data { get;set };
  
          }

          public List< Pagina> Lista()
          {
            var lista = new List< Pagina();
            var paginaDb = Database.Pagina()
            foreach(DataRow row in paginaDb.Lista().Rows)
            {
              var pagina = new Produto();
              pagina.Id = Convert.ToInt32(row["id"]);
              pagina.Nome = row["nome"].ToString();
              pagina.Conteudo = row["conteudo"].ToString();
              pagina.Data = Convert.ToDateTime(row["data"]);
              lista.Add(pagina);
            }
            return lista;
          }

          public void Save() 
          {
            new Database.Pagina().Salvar(this.Id, this.Nome, this.Conteudo, this.Data);
          }
        } 
      
    

Na classe Database criaremos o método Salvar, para gravar as informações no banco de dados.

    
      namespace Database
      {
        public class Pagina
        {
          private string sqlConn() 
          {
            return ConfigurationManager,AppSettings["SqlConn"];
          }

          public DataTable Lista() 
          {
            using (SqlConnection connection = new SqlConnection(SqlConn()))
            {

              string queryString = "select * from paginas";
              SqlCommand command = new SqlCommand(queryString, connection);
              command.Connection.Open();
              
              SqlDataAdapter adapter = new SqlDataAdapter();
              adapter.SelectCommand = command;

              DataTable table = new DataTable();
              adapter.Fill(table);
              return table;

            }
          }

          public void Salvar(int id, string nome, string conteudo, DateTime data) 
          {
            using (SqlConnection connection = new SqlConnection(connectionString))

            {

              string queryString = "insert into paginas(nome, data,conteudo) values 
                        ('"+nome +"','"+ data.ToString("yyyy-mm-dd hh:mm:ssss") +"','"+ conteudo +"')";
              if (id !=0)
              {
                queryString = "update paginas set nome = '"+ nome +"', data = '" +  
                        data.ToString("yyyy-mm-dd hh:mm:ssss") + "',conteudo = '"+ conteudo +"' where id = " + id;
              }
              
              SqlCommand command = new SqlCommand(queryString, connection);
              command.Connection.Open();
              command.ExecuteNonQuery();
            }
          }


        }
      }