none
ASP.NET MVC 4 (novato) RRS feed

  • Pergunta

  • Olá meu chefe me deu um projeto pra fazer em asp.net mvc  porem eu não sei nada. .
    eu estava dando uma olhada mas estou com dificuldades em algumas coisas na qual eu separei para vcs me ajudarem..
    aqui estao :

    Estava vendo e irei precisar de usar uma grid ... no asp.net com web Forms tem uma pré pronta q é só eu conecta e joga os campos ...
    dei uma pesquisada e vi que no asp.net mvc tem uma chamada WebGrid... como que eu uso ela ? aonde eu axo ? 
    tambem estou tendo dificuldades no quesito da estrutura do mvc ..
    tipo o usuario insere os dados .. e como que eu faço pra pegar esses dados ... manipular eles e da um insert no banco de dados ?.. em que lugar eu faria isso ?

    :x

    O banco de dados que uso é postgresql ... uso uma dll chamada npgsql...ela me permite utiliza-lo no visual studio..
    Alguem ai pode me ajudar? estou perdido em relação a isso..

    Qualquer ajuda é bem vinda. Muito Obrigado.

    segunda-feira, 7 de janeiro de 2013 16:03

Respostas

  • entendi .. é na view .. porem como q eu ligo o meu banco  de dados á webgrid?

    pelo controller.

    dá uma olhada no link que postei acima.

    é pelo controler que você faz isso.


    Aprendendo Ad Eternum

    • Marcado como Resposta Wisner12 quinta-feira, 10 de janeiro de 2013 03:25
    terça-feira, 8 de janeiro de 2013 20:00
  • Vou lhe passar um exemplo, é em VB pq é o projeto que tenho aqui.

    No Controller que vc passou ali vc precisa ter um POST, toda view vai ter um método GET que vai ser onde vc vai colocar os dados para aprensentar na View e um POST que vai ser o método que vai "pegar" os dados da View.

    Como você quer pegar um dado ja adicionado na view vc vai precisar usar o método POST. Um ex: Aqui tenho o método POST de uma View de Create do Meu Controlador Contador:

            '
            ' POST: /Contador/Create
    
            <HttpPost()>
            Function Create(contador As Contador) As ActionResult
    
                If ModelState.IsValid Then
                End If
    
                Return View("Create")
            End Function

    Na minha View eu tenho um campo chamado NomeContador e quero pegar esse nome la da View e Concatenar com o resto do nome dele que é "da Silva"

    ' ' POST: /Cliente/Create <HttpPost()> Function Create(contador As Contador) As ActionResult If ModelState.IsValid Then contador.Nome = contador.NomeContador & " da Silva"

    db.Contadores.Add(contador)
                    db.SaveChanges() End If Return View("Create") End Function

    Neste código ele vai receber qualquer nome que a pessoa colocar no campo NomeContador e gravar no banco de dados concatenado com da Silva.

    Por Exemplo, se eu colocar la na View "Paulo" ele vai gravar no banco como "Paulo da Silva"

    Espero não ter ficado confuso

    Para vc não se confundir

     contador.Nome = contador.NomeContador & " da Silva"

    contador.Nome antes do igual é o meu contexto e a propriedade da minha entidade

    e contador.NomeContador é o campo em minha view


    • Editado Paulo M Dalbosco segunda-feira, 7 de janeiro de 2013 17:45
    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:18
    segunda-feira, 7 de janeiro de 2013 17:41
  • Faz uma pesquiza no banco e joga como lista em uma ViewBag

    ViewBag.NomeVendedor = new SelectList(dadFuncionario, "NomeFuncionario", "NomeFuncionario");

    outra Tela que vc diz é outra view?

    Se for, vc vai ter que fazer isso no get da view que deseja colocar a dropdown

    Exemplo

    http://stackoverflow.com/questions/4869009/problem-populating-dropdown-boxes-in-an-asp-net-mvc-3-application


    Paulo Marcelo Dalbosco



    • Editado Paulo M Dalbosco terça-feira, 8 de janeiro de 2013 11:24
    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:18
    terça-feira, 8 de janeiro de 2013 11:15
  • Cara, da uma olhada nesse material, parece bem interessante para o uso do PostGreeSql

    http://datachomp.com/archives/getting-started-with-postgres-and-mvc3/


    Paulo Marcelo Dalbosco

    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:18
    terça-feira, 8 de janeiro de 2013 12:28
  • Cara só não esqueça de marcar as respostas que estão te ajudando.

    No caso do Webgrid vale a leitura:

    http://weblogs.asp.net/andrebaltieri/archive/2010/11/01/asp-net-mvc-3-working-with-webgrid.aspx

    E caso esteja usando o Entity, espero que sim (realmente não li tudo que postou porque ficou meio embananado pra mim, muita info hehe)

    http://www.c-sharpcorner.com/uploadfile/b19d5a/webgrid-in-Asp-Net-mvc3-razor-with-entity-framework/ (esse está bem passo-a-passo)

    Abraço e espero ter podido ajudar.


    Aprendendo Ad Eternum

    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:25
    terça-feira, 8 de janeiro de 2013 14:13

Todas as Respostas

  • Exemplos de WebGrid

    http://msdn.microsoft.com/pt-br/magazine/hh288075.aspx

    http://www.leandroprado.com.br/2011/02/usando-webgrid-com-asp-net-mvc-3-3/

    http://www.macoratti.net/12/04/asp_wbg1.htm

    A manipulação dos dados vc vai fazer no Controller, no Get ou no Post, depende se vc quer mostrar ou gravar no banco (post).

    Utilizando o PostGrresql não sei lhe responder.


    Paulo Marcelo Dalbosco

    segunda-feira, 7 de janeiro de 2013 16:12
  • Da uma lida nesse material

    MVC
    http://www.macoratti.net/08/06/asp_mvc1.htm

    MVC 3
    http://www.macoratti.net/12/03/asp_mvc3.htm


    Paulo Marcelo Dalbosco

    segunda-feira, 7 de janeiro de 2013 16:14
  • olá amigo , dei uma olhada no conteudo que você me passou e cheguei ao seguinte ponto :

    tenho a minha view

    @model MvcApplication4.Models.cadastroDeClientes
    @{
        ViewBag.Title = "CadastroDeClientes";
       
    }
    
    <center><h2>Cadastro De Clientes</h2></center>
    <form action="/home/" method="post">
        <fieldset>
            <legend>
                <p>Cadastro de Clientes</p>
            </legend>
            <div>
                <label for="nome">Nome:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.nome)</div>
           
             <div>
                <label for="cpf">CPF:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.cpf)</div>
    
            <div>
                <label for="rg">RG:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.rg)</div>
            
            <div>
                <label for="telefone">Telefone:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.telefone)</div>
    
            <div>
                <label for="endereco">Endereço:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.endereco)</div>
    
            <div>
                <label for="bairro">Bairro:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.bairro)</div>
    
            <div>
                <label for="cidade">Cidade:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.cidade)</div>
    
            <div>
                <label for="cep">CEP:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.cep)</div>
        <button type="submit">Cadastrar</button>
        </fieldset>
    
    </form>

    o meu modelo de cliente :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using Npgsql;
    using System.Web.Mvc;
    using NpgsqlTypes;
    using Mono.Security;
    
    namespace MvcApplication4.Models
    {
        public class cadastroDeClientes
        {
            public string nome { get; set; }
            public string cpf { get; set; }
            public string rg { get; set; }
            public string endereco { get; set; }
            public string cidade { get; set; }
            public string bairro { get; set; }
            public string cep { get; set; }
            public string telefone { get; set; }
    
        }
    }

    e aqui é o meu controlador :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcApplication4.Models;
    
    namespace MvcApplication4.Controllers
    {
        public class CadastrosController : Controller
        {
            //
            // GET: /Cadastros/
    
            public ActionResult Index()
            {
                return View();
            }
            public ActionResult CadastroDeClientes()
            {
                var cliente = new cadastroDeClientes();
    
                return View(cliente);
    
            }
         
    
        }
    }

    ai a minha duvida ... é como q eu pego o valor que o usuario insere: 
    exemplo ... ele inseriu Paulo  no campo nome.. 

       <div>
                <label for="nome">Nome:</label>
            </div>
             <div>@Html.TextBoxFor(Model => Model.nome)</div>


    como que eu pegava o valor paulo e acrescentava  o M Dalbosco pra ficar paulo m dalbosco?


    MUUUITO OBRIGADO..

    segunda-feira, 7 de janeiro de 2013 17:01
  • Vou lhe passar um exemplo, é em VB pq é o projeto que tenho aqui.

    No Controller que vc passou ali vc precisa ter um POST, toda view vai ter um método GET que vai ser onde vc vai colocar os dados para aprensentar na View e um POST que vai ser o método que vai "pegar" os dados da View.

    Como você quer pegar um dado ja adicionado na view vc vai precisar usar o método POST. Um ex: Aqui tenho o método POST de uma View de Create do Meu Controlador Contador:

            '
            ' POST: /Contador/Create
    
            <HttpPost()>
            Function Create(contador As Contador) As ActionResult
    
                If ModelState.IsValid Then
                End If
    
                Return View("Create")
            End Function

    Na minha View eu tenho um campo chamado NomeContador e quero pegar esse nome la da View e Concatenar com o resto do nome dele que é "da Silva"

    ' ' POST: /Cliente/Create <HttpPost()> Function Create(contador As Contador) As ActionResult If ModelState.IsValid Then contador.Nome = contador.NomeContador & " da Silva"

    db.Contadores.Add(contador)
                    db.SaveChanges() End If Return View("Create") End Function

    Neste código ele vai receber qualquer nome que a pessoa colocar no campo NomeContador e gravar no banco de dados concatenado com da Silva.

    Por Exemplo, se eu colocar la na View "Paulo" ele vai gravar no banco como "Paulo da Silva"

    Espero não ter ficado confuso

    Para vc não se confundir

     contador.Nome = contador.NomeContador & " da Silva"

    contador.Nome antes do igual é o meu contexto e a propriedade da minha entidade

    e contador.NomeContador é o campo em minha view


    • Editado Paulo M Dalbosco segunda-feira, 7 de janeiro de 2013 17:45
    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:18
    segunda-feira, 7 de janeiro de 2013 17:41
  • Existem várias formas de fazer isso:

    1- Usar o FormCollection:

    [HttpPost]
    public ActionResult CadastroDeClientes(FormCollection form)
            {
                var nome = form["nome"];
    
                return View();
    
            }

    2- Usar um model:

    [HttpPost]
    public ActionResult CadastroDeClientes(cadastroDePessoas cadastro)
            {
                var nome = cadastro.nome;
    
                return View();
    
            }

    3- usar um parametro para cada dado que você quer receber:

    [HttpPost]
    public ActionResult CadastroDeClientes(string nome, string cnpj)
            {
                return View(cliente);
    
            }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze segunda-feira, 7 de janeiro de 2013 18:27
    segunda-feira, 7 de janeiro de 2013 17:42
  • MUIIIIIIIIITO OBRIGADO GENTE O/ 
    consegui o/ 

    o codigo ficou assim : 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcApplication4.Models;
    using Npgsql;
    using NpgsqlTypes;
    
    
    namespace MvcApplication4.Controllers
    {
        public class CadastrosController : Controller
        {
    
            // GET: /Cadastros/
    
           
            public ActionResult CadastroDeClientes()
            {
                var cliente = new cadastroDeClientes();
    
                return View(cliente);
    
            }
            [HttpPost]
            public ActionResult CadastroDeClientes(cadastroDeClientes cadastro)
            {
                string nome = cadastro.nome;
                string cpf = cadastro.cpf;
                string rg = cadastro.rg;
                string telefone = cadastro.telefone;
                string endereco = cadastro.endereco;
                string bairro = cadastro.bairro;
                string cidade = cadastro.cidade;
                string cep = cadastro.cep;
    
    
                string sql;
            
                NpgsqlConnection conect = new NpgsqlConnection(sql);
                conect.Open();
                string select ="select pk_cliente,cl_nome,cl_cpf,cl_rg,cl_telefone,cl_endereco,cl_bairro,cl_cidade,cl_cep from ca_cliente";
                NpgsqlDataAdapter dtAdapter = new NpgsqlDataAdapter(select, conect);
                dtAdapter.InsertCommand = new NpgsqlCommand("insert into ca_cliente (pk_cliente,cl_nome,cl_cpf,cl_rg,cl_telefone,cl_endereco,cl_bairro,cl_cidade,cl_cep) values(DEFAULT,:nome,:cpf,:rg,:telefone,:endereco,:bairro,:cidade,:cep)",conect);
                dtAdapter.InsertCommand.Parameters.Add(":nome", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["nome"].Value = nome;
                dtAdapter.InsertCommand.Parameters.Add(":cpf", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["cpf"].Value = cpf;
                dtAdapter.InsertCommand.Parameters.Add(":rg", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["rg"].Value = rg;
                dtAdapter.InsertCommand.Parameters.Add(":telefone", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["telefone"].Value = telefone;
                dtAdapter.InsertCommand.Parameters.Add(":endereco", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["endereco"].Value = endereco;
                dtAdapter.InsertCommand.Parameters.Add(":bairro", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["bairro"].Value = bairro;
                dtAdapter.InsertCommand.Parameters.Add(":cidade", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["cidade"].Value = cidade;
                dtAdapter.InsertCommand.Parameters.Add(":cep", NpgsqlDbType.Varchar);
                dtAdapter.InsertCommand.Parameters["cep"].Value = cep;
                dtAdapter.InsertCommand.ExecuteNonQuery();
                conect.Close();
                return View();
            }
         
    
        }
    }

    agora preciso aprender a usar uma grid ..          =D
    Nossa é mt loko quando vc consegue resolve o/ uhasuahusuhashuahusa
    obrigado mesmo ...

    Se tiverem algumas dicas e tutoriais ou algo que possa me ensinar a usar a webgrid com um banco de dados ... ja agradeço desde ja o/ 
    :D


    • Editado Wisner12 segunda-feira, 7 de janeiro de 2013 20:02
    segunda-feira, 7 de janeiro de 2013 19:25
  • Te deixei uns links de como usar o WebGrid la no primeiro post, uns com exemplos para baixar.

    Agora a forma que vc vai pegar os dados no Banco é indiferente para a Web Grid, vc pode por exemplo fazer uma consulta no banco e o resultado vc passar para a WebGrid usando uma ViewBag por exemplo.


    Paulo Marcelo Dalbosco

    segunda-feira, 7 de janeiro de 2013 19:42
  • ok...
    só umas ultima coisinha .. se não for pedir mt .. 
    no caso eu tenho que jogar os clientes cadastrados em outra tela em 1 DropDownlistfor box como q eu pego esse objeto dropdownList

    no codigo normal ficaria assim : 

            public void dropdownAnimais()
            {
                string sql;
                sql = "Server=localhost;User id=postgres;Password=outro.;Database=PETSHOP";
                NpgsqlConnection con = new NpgsqlConnection(sql);
                con.Open();
                string select = "select clnome,pk_cliente from ca_cliente";
                NpgsqlCommand wx = new NpgsqlCommand(select, con);
                NpgsqlDataReader wtste = wx.ExecuteReader();
                DropDownList1.DataSource = wtste;
                DropDownList1.DataTextField = "clnome";
                DropDownList1.DataValueField = "pk_cliente";
                DropDownList1.DataBind();
                con.Close();
            }

    e agora com o mvc ?
    D:

    terça-feira, 8 de janeiro de 2013 10:49
  • Faz uma pesquiza no banco e joga como lista em uma ViewBag

    ViewBag.NomeVendedor = new SelectList(dadFuncionario, "NomeFuncionario", "NomeFuncionario");

    outra Tela que vc diz é outra view?

    Se for, vc vai ter que fazer isso no get da view que deseja colocar a dropdown

    Exemplo

    http://stackoverflow.com/questions/4869009/problem-populating-dropdown-boxes-in-an-asp-net-mvc-3-application


    Paulo Marcelo Dalbosco



    • Editado Paulo M Dalbosco terça-feira, 8 de janeiro de 2013 11:24
    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:18
    terça-feira, 8 de janeiro de 2013 11:15
  • Exato .. em  outra view .. então eu vo no get da actionResult desse view do um select e jogo no viewbag e dps coloco o viewbag como value do Dropdown list?  

    :D

    terça-feira, 8 de janeiro de 2013 11:24
  • isso!

    Da uma olhada aqui que tem um exemplo, els estão usando Lambda, mas dae vc usa o Select, não sei se da de usar Lambda com o PostGree, se der é uma mão na roda.

    http://stackoverflow.com/questions/4869009/problem-populating-dropdown-boxes-in-an-asp-net-mvc-3-application

    Paulo Marcelo Dalbosco


    terça-feira, 8 de janeiro de 2013 11:26
  • blza.. vo tenta aqui e ja te flo ... mas acho q meu maior problema vai ser joga os dados do banco no viewbag .. porque eu tinha q da DataSource ... 
    auhshuahus
    vo tenta aqui e ja te flo manin :*
    terça-feira, 8 de janeiro de 2013 11:57
  • Cara, da uma olhada nesse material, parece bem interessante para o uso do PostGreeSql

    http://datachomp.com/archives/getting-started-with-postgres-and-mvc3/


    Paulo Marcelo Dalbosco

    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:18
    terça-feira, 8 de janeiro de 2013 12:28
  • hmm.. entao eu acho q da na mesma .. uahshuahus 
    a dll q eu ja to usando ja ajuda bastante ..  o unico problema é q pra bastante coisa eu tenho que usar o objeto e aqui no mvc é meio tenso pra pega ele tipo :

      string sql;
                sql = "Server=localhost;User id=postgres;Password=outro.;Database=PETSHOP";
                NpgsqlConnection con = new NpgsqlConnection(sql);
                con.Open();
                string select = "select clnome,pk_cliente from ca_cliente";
                NpgsqlCommand wx = new NpgsqlCommand(select, con);
                NpgsqlDataReader wtste = wx.ExecuteReader();
                DropDownList1.DataSource = wtste;
                DropDownList1.DataTextField = "clnome";
                DropDownList1.DataValueField = "pk_cliente";
                DropDownList1.DataBind();
                con.Close();

    não axo nada que dêe pra faze assim .. tipo ... n da pra da DataSource na viewbag axo ..  .-. 
    enfim to apanhando pra caramba =s

    E em relação a WebGrid eu achei esse link : http://www.w3schools.com/aspnet/showfile_c.asp?filename=try_webpages_cs_004 
    onde o cara conecta com o banco de dados e joga tudo na tela ... 
    porem  quando eu tento cria a variavel "webGrid" nao da certo .. nao aparece nada de webgrid.. 
    eu teria q ta instalando algo ?

    string sql2;
                sql2 = "Server=localhost;User id=postgres;Password=otrsao.;Database=DBCINA";
                NpgsqlConnection conect = new NpgsqlConnection(sql2);
                conect.Open();
                string selectCliente = "select pk_cliente,cl_nome from ca_clientes";
                NpgsqlCommand ClAdapter = new NpgsqlCommand(selectCliente, conect);
    var grid = new WebGrid ( ClAdapter );
    
               
    ali no 
    var grid = new WebGrid ( ClAdapter );
    da erro e ele nao reconhece o webGrid D:

    terça-feira, 8 de janeiro de 2013 13:44
  • Cara só não esqueça de marcar as respostas que estão te ajudando.

    No caso do Webgrid vale a leitura:

    http://weblogs.asp.net/andrebaltieri/archive/2010/11/01/asp-net-mvc-3-working-with-webgrid.aspx

    E caso esteja usando o Entity, espero que sim (realmente não li tudo que postou porque ficou meio embananado pra mim, muita info hehe)

    http://www.c-sharpcorner.com/uploadfile/b19d5a/webgrid-in-Asp-Net-mvc3-razor-with-entity-framework/ (esse está bem passo-a-passo)

    Abraço e espero ter podido ajudar.


    Aprendendo Ad Eternum

    • Marcado como Resposta Wisner12 terça-feira, 8 de janeiro de 2013 14:25
    terça-feira, 8 de janeiro de 2013 14:13
  • o erro ta ali ja .. uahsas eu não acho o objeto webgrid .. oq tenho q fazer pra pega ele ?
    obriiigado :D

    terça-feira, 8 de janeiro de 2013 16:36
  • o erro ta ali ja .. uahsas eu não acho o objeto webgrid .. oq tenho q fazer pra pega ele ?
    obriiigado :D

    olha a diferença de sintaxe:

    @{
        var grid = new WebGrid(source: Model, canPage: true, defaultSort: "BlogName", rowsPerPage: 3, canSort: true);  
        }
    <h2>Web grid</h2>
    if (@Model != null ) 
     {    
      @grid.GetHtml(tableStyle:"grid",headerStyle: "head",  alternatingRowStyle: "alt",caption:"WebGrid"
               ) 
     
     }


    Aprendendo Ad Eternum

    terça-feira, 8 de janeiro de 2013 17:57
  • entendi .. é na view .. porem como q eu ligo o meu banco  de dados á webgrid?
    terça-feira, 8 de janeiro de 2013 18:31
  • entendi .. é na view .. porem como q eu ligo o meu banco  de dados á webgrid?

    pelo controller.

    dá uma olhada no link que postei acima.

    é pelo controler que você faz isso.


    Aprendendo Ad Eternum

    • Marcado como Resposta Wisner12 quinta-feira, 10 de janeiro de 2013 03:25
    terça-feira, 8 de janeiro de 2013 20:00