none
retornar dados ActionResult Index RRS feed

  • Pergunta

  • Boa tarde pessoal tudo bem ?

     

     

    Estou iniciando em ASP.NET MVC 3 mas estou com uma dúvida que, acreditem não consegui resolver, é uma dúvida muito simples.

     

    Eu tenho uma controller:

     

    using System;
    using System.Linq;
    
    using System.Web.Mvc;
    using System.Web.Helpers;
    
    namespace ERP.Cloud.MVC.Controllers
    {
        public class PortalController : Controller
        {
            //
            // GET: /Portal/
    
            public ActionResult Index()
            {
                return View();
    
            }
            void Graf()
            {
                Chart chart = new Chart(width: 600, height: 400)
                       .AddTitle("Gráfico em Barra")
                       .AddSeries(name: "ChartBar", chartType: "bar",
                       xValue: new[] { "Carro Esportivo", "Carro Utilitário", "Caminhonete", "Carro Passeio" },
                       yValues: new[] { 10, 5, 7, 25 }).Write();
            }
    
        }
    }
    
    

     

     

    no ActionResult index foi gerado a view abaixo

    @{  ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_LayoutModulos.cshtml";
    }
    <h2>Portal de Negócios</h2>  
    
    <div>
    <p>
    
    </p>
    
    </div>
    

     

     

    A duvida começa aqui:

    1 -Como inserir um gráfico por exemplo nesta View ? eu inseri mas quando retorna a View só aparece o gráfico, o elemneto <h2> por exemplo desaparece...

     

    2- Na view pode retornar outros dados de outros controllers ? se sim ... como posso faze-lo ?

     

    tipo nesta view eu queria retornar:

    A tabela (task) do banco de dados  --- Obs para criar os metodos (CRUD) eu consegui

    A tabela (mensagens) do banco de dados

    e mais alguns controles que gostaria de adicionar na View

     

    se fosse somente uma informação para retornar tudo bem, mas são varios controles de retorno do banco que teria a view

    Tipo para listar os dados eu consigo, mas aparece em outra view gostaria de adicionar na propria view....

     

     

    Desculpe se a perguntar é muito simples, mas estou realmente com duvida nisto...

     

    Obrigado a todos...

     

     

     

     


    Isco Sistemas José Luiz Borges
    quinta-feira, 1 de dezembro de 2011 20:15

Respostas

  • Só sei responder uma  das suas dúvidas.

     

    Seguinte, quando numa view eu quero pegar dados de outro controller normalmente eu uso ajax:

    $.ajax({
      url: controler/action,
      data: parametros,
      success: success,
      dataType: dataType
    });

    :D


    Qualquer resposta útil ou solução deve ser marcada. Assim ajudamos a quem tem o mesmo problema a achar a resposta.
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    sexta-feira, 2 de dezembro de 2011 12:14
  • Boa tarde

     

    obrigado por responder....

     

    Nossa ja vai me ajudar um monte

     

    $.ajax({
      url: Task/Index,
      data: parametros,
      success: success,
      dataType: dataType
    });

     

    Mas como vou postar o resultado dentro de uma WebGrid, ou fazer um for para postar o resultado ?

     

     

    Obrigado

     


    Isco Sistemas José Luiz Borges
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    sábado, 3 de dezembro de 2011 19:56
  • Olá 

     

    Não sei bem como levar o objeto graph pois ainda não trabalhei com ele, 

    Mas talves isto ajude, 

    No exemplo acima na chamda INDEX,   voce não esta retornando nenhum dados para a view,  veja abaixo

     

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


    a ideia é que voce pode retornar um dado dentro da chamada por exemplo:


    	 public ActionResult Index()
            {
    		Ilist<pessoas> pessoas = new Ilist<pessoas>;
                	return View(pessoas);
    
            }

    outra forma:  ( é uma tentativa, ok )

     public ActionResult Index()
            {

    		Chart chart = new Chart(width: 600, height: 400)
                       .AddTitle("Gráfico em Barra")
                       .AddSeries(name: "ChartBar", chartType: "bar",
                       xValue: new[] { "Carro Esportivo", "Carro Utilitário", "Caminhonete", "Carro Passeio" },
    
                       yValues: new[] { 10, 5, 7, 25 }).Write();
    		ViewData['Graph'] = chart;
                return View();
    
            }

    Desta forma voce pode tentar fazer uma chamada dentro da sua view.

    <h2>
    	@=(Chart)ViewData['chart']; 

    </h2>


    Tenta ai  Grande.... qualquer coisa avisa, 






    	


     

     


    http://fparmezani.wordpress.com
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    domingo, 4 de dezembro de 2011 21:37
  • Opa obrigado por responder...

     

    Então o gráfico eu consegui neste final de semana, com exatamente o codigo acima...

     

    Meu maior problema é retornar dentro da View Index mais que uma consulta ao banco de dados, por exemplo nesta página o usuário

    teria:

    As tarefas designadas para ele

    As Mensagens postadas

    A carteira de título de seus clientes

    todas vindo de tabelas distintas do banco de dados, esta é a pior parte.... Como estou estudando o MVC não consigo passar desta barreira, o projeto já existe em WebForms......

     

     

    O que estamos fazendo em paralelo é reescrevendo em WebForms, usando o padrão MVC, mas gostaria de utilizar o MVC 3 pela facilidade de criação de telas....

     

     

     

     

     

     


    Isco Sistemas José Luiz Borges
    segunda-feira, 5 de dezembro de 2011 10:28
  • Opa José, 

     

    Então  se entendi seu problema,  voce precisa de várias  "listagens" papara  popular uma view correto?/

    Então  uma boa opção é:

     

    1. Crie as listagens dentro das Models.

     

    2. Na chamada da View   utilize ViewData["lista1"] = recebe os dados, ou no caso do MVC 3  voce tem o VIEWBAg.   (use e abuse)

     

    3.  Dentro das View  recupere os dados dentro do ViewBag ou ViewData  realizando um Cast.

     

    Qualquer avisa ai..

     

     

     

     


    http://fparmezani.wordpress.com
    segunda-feira, 5 de dezembro de 2011 15:03
  • Boa tarde amigos,

     

    Consegui resolver o que eu precisava, com a ajuda de vcs é claro.

     

    View:

     

    @Html.Action("Teste","Home")
    @Html.Action("Index","Abc")
    <img src='/Home/ChartBar' />
    
    


    Estou trazendo dentro da mesma View dois resultados de tabelas diferentes

    @html.action(actionName, ControllerName)

     

    Ainda tem o esquema da PartialView que também resolveria meu problema, mas o codigo acima ja me ajudou....

    a img é referente ao grafico postado no primeiro post desta thead

     

     

     

    Obrigado a todos que contribuiram com este post.

     

     

     

     

     

     

     

     


    Isco Sistemas José Luiz Borges
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    segunda-feira, 5 de dezembro de 2011 16:20

Todas as Respostas

  • Só sei responder uma  das suas dúvidas.

     

    Seguinte, quando numa view eu quero pegar dados de outro controller normalmente eu uso ajax:

    $.ajax({
      url: controler/action,
      data: parametros,
      success: success,
      dataType: dataType
    });

    :D


    Qualquer resposta útil ou solução deve ser marcada. Assim ajudamos a quem tem o mesmo problema a achar a resposta.
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    sexta-feira, 2 de dezembro de 2011 12:14
  • Boa tarde

     

    obrigado por responder....

     

    Nossa ja vai me ajudar um monte

     

    $.ajax({
      url: Task/Index,
      data: parametros,
      success: success,
      dataType: dataType
    });

     

    Mas como vou postar o resultado dentro de uma WebGrid, ou fazer um for para postar o resultado ?

     

     

    Obrigado

     


    Isco Sistemas José Luiz Borges
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    sábado, 3 de dezembro de 2011 19:56
  • Olá 

     

    Não sei bem como levar o objeto graph pois ainda não trabalhei com ele, 

    Mas talves isto ajude, 

    No exemplo acima na chamda INDEX,   voce não esta retornando nenhum dados para a view,  veja abaixo

     

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


    a ideia é que voce pode retornar um dado dentro da chamada por exemplo:


    	 public ActionResult Index()
            {
    		Ilist<pessoas> pessoas = new Ilist<pessoas>;
                	return View(pessoas);
    
            }

    outra forma:  ( é uma tentativa, ok )

     public ActionResult Index()
            {

    		Chart chart = new Chart(width: 600, height: 400)
                       .AddTitle("Gráfico em Barra")
                       .AddSeries(name: "ChartBar", chartType: "bar",
                       xValue: new[] { "Carro Esportivo", "Carro Utilitário", "Caminhonete", "Carro Passeio" },
    
                       yValues: new[] { 10, 5, 7, 25 }).Write();
    		ViewData['Graph'] = chart;
                return View();
    
            }

    Desta forma voce pode tentar fazer uma chamada dentro da sua view.

    <h2>
    	@=(Chart)ViewData['chart']; 

    </h2>


    Tenta ai  Grande.... qualquer coisa avisa, 






    	


     

     


    http://fparmezani.wordpress.com
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    domingo, 4 de dezembro de 2011 21:37
  • Opa obrigado por responder...

     

    Então o gráfico eu consegui neste final de semana, com exatamente o codigo acima...

     

    Meu maior problema é retornar dentro da View Index mais que uma consulta ao banco de dados, por exemplo nesta página o usuário

    teria:

    As tarefas designadas para ele

    As Mensagens postadas

    A carteira de título de seus clientes

    todas vindo de tabelas distintas do banco de dados, esta é a pior parte.... Como estou estudando o MVC não consigo passar desta barreira, o projeto já existe em WebForms......

     

     

    O que estamos fazendo em paralelo é reescrevendo em WebForms, usando o padrão MVC, mas gostaria de utilizar o MVC 3 pela facilidade de criação de telas....

     

     

     

     

     

     


    Isco Sistemas José Luiz Borges
    segunda-feira, 5 de dezembro de 2011 10:28
  • Opa José, 

     

    Então  se entendi seu problema,  voce precisa de várias  "listagens" papara  popular uma view correto?/

    Então  uma boa opção é:

     

    1. Crie as listagens dentro das Models.

     

    2. Na chamada da View   utilize ViewData["lista1"] = recebe os dados, ou no caso do MVC 3  voce tem o VIEWBAg.   (use e abuse)

     

    3.  Dentro das View  recupere os dados dentro do ViewBag ou ViewData  realizando um Cast.

     

    Qualquer avisa ai..

     

     

     

     


    http://fparmezani.wordpress.com
    segunda-feira, 5 de dezembro de 2011 15:03
  • Boa tarde amigos,

     

    Consegui resolver o que eu precisava, com a ajuda de vcs é claro.

     

    View:

     

    @Html.Action("Teste","Home")
    @Html.Action("Index","Abc")
    <img src='/Home/ChartBar' />
    
    


    Estou trazendo dentro da mesma View dois resultados de tabelas diferentes

    @html.action(actionName, ControllerName)

     

    Ainda tem o esquema da PartialView que também resolveria meu problema, mas o codigo acima ja me ajudou....

    a img é referente ao grafico postado no primeiro post desta thead

     

     

     

    Obrigado a todos que contribuiram com este post.

     

     

     

     

     

     

     

     


    Isco Sistemas José Luiz Borges
    • Marcado como Resposta Jose Luiz Borges segunda-feira, 5 de dezembro de 2011 16:27
    segunda-feira, 5 de dezembro de 2011 16:20