Jump to content
JullySL

Asp.net mvc 5 e jquery

Recommended Posts

Boa tarde!

Alguém pode me ajudar por favor?

Quero abrir o detalhe do produto que formatei na minha controller, porém quando chamo o método ele abre apenas o método sem o layout da minha Shared, alguém pode me ajudar por favor?
 

 public string ProdutoDestaques(string param )
        {
            var b = new StringBuilder();
            try
            {
                var uow = new UnitOfWork();
                var lista = new List<Produto>();
                string[] include = new string[] { };
                lista = uow.ProdutoRepositorio
                    .Listar(i => i.Finalidade == param, include).OrderByDescending(x => x.Referencia).Take(4).ToList();

                foreach (var item in lista)
                {          
                    var nome = "<span>" + item.Referencia + "</span>";
                   var url = Url.Action("Detalhe", "Home", new { referencia = item.Referencia });
                    b.AppendLine("<div class='box_detalhes'>");
                    b.AppendLine("<div class='box_foto'><a href=''><img src='/Content/images/sgimais.jpg' title='Clique para Ampliar' border='0' alt='Foto do imóvel' /></a></div> ");
                    b.AppendLine("<div class='desc_box'>");
                    b.AppendLine("<p> <strong> Referencia: </strong>" + item.Referencia + "</p> ");
                    b.AppendLine("<p> <strong> " + item.IdTipoImovel + "</strong></p> ");
                    b.AppendLine("<p> <strong> " + item.Localizacao + "</strong></p> ");
                    b.AppendLine("<p> <strong> Valor Venda: </strong> <span>" + item.ValorVenda.ToString() + "</span> </p> ");
                    b.AppendLine("<p> <strong> Valor Locação: </strong> <span>" + item.ValorLocacao.ToString() + "</span> </p> ");
                    b.AppendLine("<li>");

Quando clica neste botão, ele executa o controller Detalhe, porém ele mostra só o resultado sem o layout do projeto.
                    b.AppendLine("<a href=" + url + ">");
                    b.AppendLine("Teste </a>");
                    b.AppendLine("</li>")
                    b.AppendLine("</div>");
                    b.AppendLine("</div>");
                }
                if (lista.Count > 0)
                {
                    return b.ToString();
                }
                else
                    return SemMensagens();
            }
            catch
            {
                return SemMensagens();
            }
        }

 

Função:

    Detalhe: function (referencia) {
        var url = "/Home/Detalhe";
        $.ajax({
            url: url,
            datatype: "html",
            type: "GET",
            data: { referencia:referencia },
        }).done(function (data) {

                $("#Detalhe").html(data);
        }).fail(function (jqXHR, exception) {
            TratamendodeErro(jqXHR, exception);
        });
    },

 

Controller:
public ActionResult Detalhe(int referencia)
        {
            var b = new StringBuilder();
            try
            {
                var uow = new UnitOfWork();
                var lista = new List<Produto>();
                string[] include = new string[] { };
                lista = uow.ProdutoRepositorio
                    .Listar(i => i.Referencia == referencia.ToString(), include).ToList();
                foreach (var item in lista)
                {
                    var nome = "<span>" + item.Referencia + "</span>";
                    var descricao = item.Descricao.ToString();
                    b.AppendLine("<div class='box_detalhes'>");
                    b.AppendLine("<div class='desc_box'>");
                    b.AppendLine("<p> <strong> Referencia: </strong>" + item.Referencia + "</p> ");
                    b.AppendLine("<p> <strong> " + item.IdTipo + "</strong></p> ");
                    b.AppendLine("</div>");
                    b.AppendLine("</div>");
                }
                if (lista.Count > 0)
                {
                    return View(b.ToString());
                }
                else
                    return View(SemMensagens());
            }
            catch
            {
                return View(SemMensagens());
            }
        }

Share this post


Link to post
Share on other sites
2 horas atrás, quintelab disse:

Já testou outras views ? O layout funciona nas outras ?
Sim estão funcionando. O Problema é que, como estou chamando o box dos produtos em tempo de execução, não estou conseguindo chamar o método em jquery para abrir ele na view =( e preciso dele ai pois terei vários layouts diferentes que meu cliente irá poder escolher
 

b.AppendLine("<div class='box_detalhes'>");
                    b.AppendLine("<div class='box_foto'><a href=''><img src='/Content/images/sgimais.jpg' title='Clique para Ampliar' border='0' alt='Foto do imóvel' /></a></div> ");
                    b.AppendLine("<div class='desc_box'>");
                    b.AppendLine("<p> <strong> Referencia: </strong>" + item.Referencia + "</p> ");
                    b.AppendLine("<p> <strong> " + item.IdTipoImovel + "</strong></p> ");
                    b.AppendLine("<p> <strong> " + item.Localizacao + "</strong></p> ");
                    b.AppendLine("<p> <strong> Valor Venda: </strong> <span>" + item.ValorVenda.ToString() + "</span> </p> ");
                    b.AppendLine("<p> <strong> Valor Locação: </strong> <span>" + item.ValorLocacao.ToString() + "</span> </p> ");
                    b.AppendLine("<li>");

Quando clica neste botão, ele executa o controller Detalhe, porém ele mostra só o resultado sem o layout do projeto.
                    b.AppendLine("<a href=" + url + ">");
                    b.AppendLine("Teste </a>");
                    b.AppendLine("</li>")
                    b.AppendLine("</div>");
                    b.AppendLine("</div>");



Uma dica...  ao invés de retornar uma string que é o seu HTML, você poderia retornar um List e executar esse foreach na sua view.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Artes Ussler
      Olá
       
      Alguém já usou o modal deste link: 
       
      https://jquerymodal.com/
       
      e alterou ele para abrir um modal ao acessar a página, e não ao clicar em um link?
       
      Caso alguém tenha feito e puder me mostrar como faz, fico grato.
       
    • By Lincoln Ferreira
      Eu estou tentando fazer um Jquery steps wizard mas não consigo colocar pra ele parar caso não tenha sido preenchido o formulario no segundo passo.
      http://www.jquery-steps.com/Examples
       
      if (newIndex === 2 && $("#Rua").val() == "") { return false; } $(document).ready(function() { $("#wizard").steps({ headerTag: "h2", bodyTag: "section", transitionEffect: "slideLeft", stepsOrientation: "vertical", labels: { current: "current step:", pagination: "Pagination", finish: "Finalizar", next: "Confirmar", previous: "Voltar", loading: "Carregando ..." }, onStepChanging: function(event, currentIndex, newIndex, cepError) { if (currentIndex > newIndex) { return true; } if (newIndex === 1) { return true; } if (newIndex === 2 && $("#Rua").val() == "") { return false; } } } ) }); <div id="wizard"> <h2>Verificação pedido</h2> <section> <h2><strong>Pedido:</strong></h2> <div class="lista-carrinho"></div> </section> <h2>Local de entrega</h2> <section> <div class="informações-usuario"> <form method="get" action="." id="#form-cep"> <div class="form-row"> <div class="form-group col-md-6"> <label for="cep">Cep:</label> <input name="cep" type="text" class="form-control" id="cep" placeholder="09572-660" value="" size="10" maxlength="9" required> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="rua">Rua:</label> <input name="rua" class="form-control" type="text" id="rua" placeholder="Sete de Dezembro" size="60" maxlength="" /> </div> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="bairro">Bairro:</label> <input name="bairro" class="form-control" type="text" placeholder="Nova Gerty" id="bairro" size="40" maxlength="40" /> </div> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="n">N°:</label> <input name="n" class="form-control" type="text" placeholder="2" id="n" size="6" maxlength="10" /> </div> </div> <div class="form-group col-md-6"> <label for="complemento">Complemento:</label> <input name="complemento" type="text" class="form-control" id="complemento" placeholder="Ao lado do extra" value="" size="10" maxlength="9" requerid> </div> <div class="form-row"> <div class="form-group col-md-11"> <label for="cidade">Cidade:</label> <input name="cidade" class="form-control" type="text" placeholder="São Bernardo do Carpo" id="cidade" size="40" maxlength="40" /> </div> </div> </div> </form> </div> </section> <h2>Forma de pagamento</h2> <section> <div class="row d-flex justify-content-center col-sm col-md col-lg m-5 "> <h2>Informe sua forma de pagamento :</h2> </div> <div class="row d-flex justify-content-center col-sm col-md col-lg m-5 "> <div class="col-2"> <li class="list-inline-item"> <div class="pure-radiobutton"> <input id="Dinheiro" name="dinheiro" type="radio" class="radio"> <label for="Dinheiro">Dinheiro</label> </div> </li> </div> <div class="row"> </div> <div class="col-2"> <li class="list-inline-item"> <div class="pure-radiobutton"> <input id="Cartao" name="cartao" type="radio" class="radio"> <label for="Cartao">Cartão</label> </div> </li> </div> </div> </section> </div>
    • By marcelocardoso
      Fala galera...
      Depois de tanto sofrer tentando e pesquisando na internet, não consegui resolver...
      A nível de conhecimento, segue código para:::

      1) Ao clicar, pegar o id do botão, em seguida abrir com slidetoggle e jogar no TOP tipo ancora.
      2) ou seja, expandir a slidetoggle, mas POSICIONAR no id da DIV, SECTION ou etc...

      CODE:
       
      $(function () { // $("#btn-maps").on("click", function () { // $('html, body').animate({ // scrollTop: $("#maps").slideToggle('slow').offset().top - 135 // }, 1200, 'linear'); // }); $("#btn-maps").click( function (event) { event.preventDefault(); if ($("#maps").is(":visible")) { $("#maps").slideUp(600).offset().top; } else { $("#maps").slideDown(600).offset().bottom; } } ); }); Este código, funciona perfeitamente, adaptado de vários códigos buscados na internet, porém, não consigo com nenhum dos dois, posicionar ao CLICK o SLIDETOGGLE ao expandir deixar examente no inicio do ID;

      Dicas, Sugestões como fazer, realizar, agradeço.
      Obrigado.

       
    • By ricardonews
      Olá pessoal, fiz 2 formularios  de login em jquery e ajax, um eu vi na internert o modelo então fiz umas adaptações e funcionou com meu banco de dados. porem o outro que fiz baseado nele não funcionou. vou postar aqui pra voces o funcionando e o não funcionando, alguém pode me dar uma ajuda?, dizer que erro é esse? ele simplesmente não loga e não aparece erros no console.
      <!doctype html> <html> <?php require_once"config.php"; ?> <head> <title>APRENDIZ DE JS</title> <link href="style.css" rel="stylesheet" type="text/css"> <script src="jquery-3.2.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but_submit").click(function(){ var username = $("#meu_nome").val().trim(); var password = $("#minha_senha").val().trim(); if( username != "" && password != "" ){ $.ajax({ url:'pesquisar.php', type:'post', data:{username:username,password:password}, success:function(response){ var msg = ""; if(response == 1){ window.location = "home.php"; }else{ msg = "Invalid username and password!"; } $("#message").html(msg); } }); } }); }); </script> </head> <body> <div class="container"> <div id="div_login"> <h1>Login</h1> <div id="message"></div> <div> <input type="text" class="textbox" id="meu_nome" name="meu_nome" placeholder="Username" /> </div> <div> <input type="password" class="textbox" id="minha_senha" name="minha_senha" placeholder="Password"/> </div> <div> <input type="button" value="logar" name="but_submit" id="but_submit" /> </div> </div> </div> </body> </html> /* Container */ .container{ width:40%; margin:0 auto; } /* Login */ #div_login{ border: 1px solid gray; border-radius: 3px; width: 470px; height: 270px; box-shadow: 0px 2px 2px 0px gray; margin: 0 auto; } #div_login h1{ margin-top: 0px; font-weight: normal; padding: 10px; background-color: cornflowerblue; color: white; font-family: sans-serif; } #div_login div{ clear: both; margin-top: 10px; padding: 5px; } #div_login .textbox{ width: 96%; padding: 7px; } #div_login input[type=submit]{ padding: 7px; width: 100px; background-color: lightseagreen; border: 0px; color: white; } #message{ width:100%; text-align:center; color:red; } /* media */ @media screen and (max-width:720px){ .container{ width: 100%; } #div_login{ width: 99%; } } <?php require_once "config.php"; // AQUI É O PESQUISAR PHP $uname = mysqli_real_escape_string($con,$_POST['username']); $password = mysqli_real_escape_string($con,$_POST['password']); if ($uname != "" && $password != ""){ $sql_query = "SELECT count(*) as cntUser FROM usuarios WHERE username='".$uname."' and password='".$password."'"; $result = mysqli_query($con,$sql_query); $row = mysqli_fetch_array($result); $count = $row['cntUser']; if($count > 0){ $_SESSION['uname'] = $uname; echo 1; }else{ echo 0; } } <?php require_once "config.php"; // AQUI É A HOME.PHP // Check user login or not if(!isset($_SESSION['uname'])){ header('Location: index.php'); } // logout if(isset($_POST['but_logout'])){ session_destroy(); header('Location: index.php'); } ?> <!doctype html> <html> <head> <title>SEJA BEM VINDO!</title> </head> <body> <h1>PÁGINA INICIAL</h1> <form method='post' action=""> <input type="submit" value="SAIR" name="but_logout"> </form> </body> </html> <?php // ESSE AQUI É A CONFIG.PHP session_start(); $host = "localhost"; /* Host name */ $user = "root"; /* User */ $password = ""; /* Password */ $dbname = "login2"; /* Database name */ $con = mysqli_connect($host, $user, $password,$dbname); // Check connection if (!$con) { die("Connection failed: " . mysqli_connect_error()); } Então pessoal, até aqui funciona normal .
      agora a linha abaixo é oque não funciona e eu vou postar só a index e o css porque repete o de cima.
      se alguém poder me ajudar eu fico grato. desde já muito obrigado
      <html> <?php require_once"config.php"; ?> <head> <title>Formulario de login </title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <script src="jquery-3.2.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but_submit").click(function(){ var username = $("#meu_nome").val().trim(); var password = $("#minha_senha").val().trim(); if( username != "" && password != "" ){ $.ajax({ url:'pesquisar.php', type:'post', data:{username:username,password:password}, success:function(response){ var msg = ""; if(response == 1){ window.location = "home.php"; }else{ msg = "Invalid username and password!"; } $("#message").html(msg); } }); } }); }); </script> </head> <body> <form id="formulario" method="post"> <fieldset> <h2>Configuracoes da conta</h2> <h3>Area de login </h3> <input type="text" id="meu_nome"name="meu_nome" placeholder="username" /> <input type="password" id="minha_senha " name="minha_senha" placeholder="digite sua senha" /> <input type="submit" class="next acao" value="Logar" /> </fieldset> </body> </html> agora é o css
      *{margin:0; padding:0;} html{ height:100%; background: linear-gradient(rgba(38, 128, 101, 0.9), rgba(52, 177, 140, 0.9)); } .erros, .ok { width:390px; padding:5px; background:rgba(238, 249, 113, 0.9); margin: 20px auto 0 auto; border: 1px solid rgba(222,239,10,0.9); border-radius: 4px; color: #333; } .ok{background: rgba(155,222,143,0.9);border-color: rgba(68, 171, 50, 0.9);color:white;} body{ font-family: "Trebuchet MS", tahoma, arial; } #formulario{ width:500px; margin:40px auto; text-align:center; position:relative; } #formulario fieldset{ background:white; border:0 none; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; box-shadow:0 0 15px 1px rgba(0,0,0, 0.4); padding:20px 30px; box-sizing: border-box; width:80%; margin:0 10%; position:absolute; } #formulario input, #formulario textarea{ padding:10px; border:1px solid rgba(38, 128, 101, 0.9); border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; outline:none; box-sizing: border-box; width:100%; font:14px "Trebuchet MS", tahoma, arial; color:#090; margin-bottom:10px; } #formulario .acao{ width:100px; background:rgba(38, 128, 101, 0.9); color:white; text-transform:uppercase; font-weight:bold; padding:12px 0; float:left; margin-right:5%; } #formulario .acao:hover{background:rgba(52, 177, 140, 0.9); cursor:pointer;}  
    • By ricardonews
      Olá pessoal, fiz um formulario de cadastro usando o jquery ,ajax com o json. só que agora eu estou querendo logar  no banco, fiz todo o procedimento normal que se faz para site em php, mas não consegui nada,  eu tenho algumas imagem aqui  vou colocar.
      Queria logar, eu coloquei a index  sem o php porque tentei com php e js mas nao funcionou , alguem pode me ajudar ?
      desde já obrigado.




×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.