Cenário detalhado - ASP.NET MVC CSHARP PASSAGEM DE PARAMETRO NO @HTML.ACTIONLINK

20/04/2016

0

Joguei a toalha. Uma rotina que chega a ser elementar estou apanhando por não conhecer o comportamento dos scripts.
caso um:
Preciso passar para um @Html.ActionLink um parâmetro originado de uma variável que pega o valor de um @Html.DropDownList, tenho tentado fazer com ajax, mas não estou conseguindo finalizar. O valor é passado em branco! ou é passado embutido no link como parâmetro fixo, conforme abaixo.

caso dois:
Este é o caso ideal
Através de um button tento passar o valor selecionado do @Html.DropDownList através do evento onclick do botão, mas não funciona nem a pau

Se me explicarem as duas rotinas, tanto do actionlink pelo script e do button pelo ajax ou jquery, agradeço muitissimo!

Segue o codigo , isso é só um recorte para explicar o problema:
public class Cidade
{
[Key]
public int CidadeId { get; set; }
public string Nome { get; set; }

public List<Cidade> ListaCidades()
{
return new List<Cidade>
{
new Cidade{CidadeId = 1, Nome = "Cidade 01"},
new Cidade{CidadeId = 2, Nome = "Cidade 02"},
new Cidade{CidadeId = 3, Nome = "Cidade 03"}
};
}
}

CONTROLLERS--------------------------------------
public ActionResult Index()
{
ViewBag.CidadeId = new SelectList
(
new Cidade().ListaCidades(),
"CidadeId",
"Nome"
);
return View();
}

public ActionResult Pagina2(string id)
{

ViewBag.Msg = "Parametro transferido " + id;
return View();
}

VIEW-------------------------------------------------------
@model IEnumerable<EventosDiversos.Models.Cidade>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(document).ready(function () {
//Esta rotina serve apenas para inspeção
//e para mostrar a cidade selecionada
$('#CidadeId').change(function () {
apontarSelecao();
});

function apontarSelecao() {
var ck = $('#CidadeId option:selected').text();
var cki = $('#CidadeId option:selected').val();

checa.innerHTML = "Checagem:" + ck;
txtId.innerHTML = cki;
}
// fim da inspeção


//A rotina abaixo é a situação ótima é o que realmente quero
//mas não consigo evoluir e passar o link com a variavel
//para a pagina2.
//Tentei fazer com ajax, mas uma rotina com jquery tbm resolve
$(".btnEnviar").on("click", (function () {
var _data = $('#CidadeId option:selected').val();
//alert(_data);
$.ajax({
type: 'get',
url: '/home/pagina2',
data: _data,
success:function(data) {
alert(data);
}
});
}));

})
</script>


</head>
<body>

<div>
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()

<div class="row">
@Html.DropDownList("CidadeId", String.Empty)

<input type="button" value="Enviar" class="btnEnviar btn-default" />
</div>

//No linkador abaixo consigo chamar a pagina com o id fixo "3" mas não
//consigo trazer o Id da cidade selecionada no DropDown para que seja passado
//como parametro. Tento abastecer uma variavel no script acima e traze-la para cá
//não estou sabendo como.
@Html.ActionLink("Chamar a Pagina2 >>", "Pagina2", new { id = "3" }, new { id = "linkador", name = "linkador" })

}
</div>
<div>
<hr />
</div>
<div>
<hr />
<h1>Inspeção</h1>
<h2 id="checa">Checagem:</h2>
<h2 id="txtId"></h2>
</div>
</body>
</html>

VIEW PAGINA2----------------------------

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Pagina2</title>
</head>
<body>
<div>
<h2>Passagem do parametro</h2>
<p>O codigo é: @ViewBag.Msg </p>
</div>

@Html.ActionLink("Voltar","Index",null,"")
</body>
</html>
Jobson Lira

Jobson Lira

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar