Dúvida com criação de view?
07/04/2015
0
Agradeço
@model List<SistemaMobile.Models.cliente> @{ ViewBag.Title = ""; } <script> function Selecionar() { var opcao1 = document.getElementById('radio-choice-v-2a').checked; var opcao2 = document.getElementById('radio-choice-v-2b').checked; var opcao3 = document.getElementById('radio-choice-v-2c').checked; var txtPesquisa = document.getElementById('pesquisa').value; var Resposta if (opcao1 != false) { Resposta = 1 // alert("selecionou a opção " + Resposta); } if (opcao2 != false) { Resposta = 2 // alert("selecionou a opção " + Resposta); } if (opcao3 != false) { Resposta = 3 // alert("selecionou a opção " + Resposta); } if (txtPesquisa != null) { // alert("enviando os parametros"); if (Resposta > 0) { $.post("/ConsultaCliente/ListaCliente", { recebeNome: txtPesquisa, recebeOpcao: Resposta }).done(function (data) { // window.location.reload(); }) } } else { alert("Adicionar um texto para pesquisa!") } } </script> <form > <fieldset data-role="controlgroup"> <legend>Opção:</legend> <input type="radio" name="radio-choice-v-2" id="radio-choice-v-2a" value="1" > <label for="radio-choice-v-2a">Seu Nome</label> <input type="radio" name="radio-choice-v-2" id="radio-choice-v-2b" value="2" > <label for="radio-choice-v-2b">Nome do Pai</label> <input type="radio" name="radio-choice-v-2" id="radio-choice-v-2c" value="3" > <label for="radio-choice-v-2c">Nome da Mãe</label> </fieldset> <fieldset> <label for="search">Localizar:</label> <input type="search" name="search1" id="pesquisa" placeholder="buscar registro..."> </fieldset> <input id="enviar" type="submit" value="Localizar" onclick="Selecionar()" data-icon="grid" data-iconpos="right" data-theme="e"> </form>
public ActionResult Index() { return View(); } public ActionResult ListaCliente(string recebeNome, int recebeOpcao) { try { sistema_mobileEntities dao = new sistema_mobileEntities(); IQueryable<cliente> sql; sql = null; if (recebeOpcao == 1) { //link to sql não tem like sql = from c in dao.cliente where c.nome.StartsWith(recebeNome.Trim()) // where SqlMethods.Like(c.nome, recebeNome.Trim() + "%") select c; TempData["opcao1"] = "nome"; } if (recebeOpcao == 2) { sql = from c in dao.cliente where c.pai.StartsWith(recebeNome.Trim()) select c; TempData["opcao2"] = "pai"; } if (recebeOpcao == 3) { sql = from c in dao.cliente where c.mae.StartsWith(recebeNome.Trim()) select c; TempData["opcao3"] = "mae"; } //return View(sql.ToList()); return View(dao.cliente.ToList()); } catch (Exception ex) { return Json("Erro ao consultar usuario" + ex.Message); } }
@model List<SistemaMobile.Models.cliente> @{ ViewBag.Title = "ListaCliente"; } <form class="ui-filterable"> <input id="rich-autocomplete-input" data-type="search" placeholder="Buscar um texto..."> </form> <ul data-role="listview" data-filter="true" data-inset="true" data-input="#rich-autocomplete-input"> @foreach (var item in Model) { <li data-filtertext="@Html.DisplayFor(c => item.nome)"> <a href="@Url.Action("AtualizaCliente", "ConsultaCliente", new { id = item.idcliente})"></a></li> } </ul>
Crist
Posts
07/04/2015
Crist
No meu Index, eu tenho uma função para enviar dois parâmetros:
if (txtPesquisa != null) { // alert("enviando os parametros"); if (Resposta > 0) { $.post("/ConsultaCliente/ListaCliente", { recebeNome: txtPesquisa, recebeOpcao: Resposta }).done(function (data) { // window.location.reload(); }) } } else { alert("Adicionar um texto para pesquisa!") }
No meu controller eu recebe estes parâmetros para fazer uma consulta:
public ActionResult ListaCliente(string recebeNome, int recebeOpcao)
então, eu deveria ser redirecionado para :
@model List<SistemaMobile.Models.cliente> @{ ViewBag.Title = "ListaCliente"; }
Mais estou ficando na mesma página da consulta, preciso entender o porque ocorre isso.
Agradeço se puder ajudar!
07/04/2015
Crist
index
@model List<SistemaMobile.Models.cliente> @{ ViewBag.Title = ""; } @using (Html.BeginForm()) { <fieldset data-role="controlgroup"> <input type="radio" name="@Html.RadioButton("nome", "Nome", true)" id="radio-choice-v-2a" value="1" > <label for="radio-choice-v-2a">Seu Nome</label> <input type="radio" name="@Html.RadioButton("pai", "Pai", true)" id="radio-choice-v-2b" value="1" > <label for="radio-choice-v-2b">Nome do Pai</label> <input type="radio" name="@Html.RadioButton("mae", "Mae", true)" id="radio-choice-v-2c" value="1" > <label for="radio-choice-v-2c">Nome da Mãe</label> </fieldset> <fieldset> <label for="search">Localizar:</label> <input type="search" name="search1" id="pesquisa" placeholder="buscar registro..."> </fieldset> <input id="enviar" type="submit" value="Localizar" data-icon="grid" data-iconpos="right" data-theme="e"> } <p>@TempData["titulo1"]</p> <ul data-role="listview" data-autodividers="true" data-inset="true" data-theme="e"> @if (Model.Count() > 0) { foreach (var item in Model) { <li><a href="@Url.Action("AtualizaCliente", "ConsultaCliente", new { id = item.idcliente })">@Html.DisplayFor(c => item.nome) </a></li> } } else { <label>Você não tem dados cadastrados.</label> } </ul>
controller
[HttpPost] public ActionResult Index(string recebeNome, int recebeOpcao) { try { sistema_mobileEntities dao = new sistema_mobileEntities(); IQueryable<cliente> sql; sql = null; if (recebeOpcao == 1) { sql = from c in dao.cliente where c.nome.StartsWith(recebeNome.Trim()) select c; TempData["opcao1"] = "nome"; } return View(sql.ToList()); } catch (Exception ex) { TempData["Erro"] = "Erro na gravação dos dados " + ex.Message; } return View(); }
07/04/2015
Joel Rodrigues
Quando você faz a submissão de dados via Ajax, você não é redirecionado para a outra página (é pra isso que serve o Ajax).
Se você quer que o usuário submeta um formulário de pesquisa, pode manter a estrutura do controller e no form ter os inputs com o mesmo nome dos parâmetros que serão enviados. É importante também que o form esteja apontando para a Action que receberá os argumentos da pesquisa.
07/04/2015
Randrade
Porém, eu não consegui entender direito sua dúvida. Caso não tenha achado a resposta ainda, explique seu problema, que ficarei feliz em ajudar.
07/04/2015
Randrade
Você pode utilizar Helpers, que eu particularmente aconselho. Você pode adicionar eles na classe do Bootstrap, sem problemas, praticamente da mesma forma.
O problema que você estava tendo, é que ao pesquisar (e muito, pelo sinal), você encontrou três formas diferentes de passar os dados para o Controller. Cada uma dessas formas funcionam perfeitamente. Porém você estava utilizando as três da mesma forma. E isso que estava sendo o problema.
Mas isso acontece, e é normal.
Apenas deixando uma obs, na forma que você está utilizando:
Se você deixar o Controller desta forma, se o usuário não selecionar nenhum RadioButton, você terá um erro em seu sistema. Ou você adiciona o parâmetro podendo receber null, ou você adiciona uma rota para isso, em seu RouteConfig.
Clique aqui para fazer login e interagir na Comunidade :)