Solución:
Te voy a dar 2 formas de llamar a una acción desde el lado del cliente.
primero
Si solo desea navegar a una acción, debe llamar, simplemente use el siguiente
window.location = "/Home/Index/" + youid
Notas: que su acción necesita manejar un tipo de obtención llamado
Segundo
Si necesita renderizar una vista, puede hacer la llamada por ajax
//this if you want get the html by get
public ActionResult Foo()
{
return View(); //this return the render html
}
Y el cliente llamó así “Suponiendo que estás usando jquery”
$.get('your controller path', parameters to the controler , function callback)
o
$.ajax({
type: "GET",
url: "your controller path",
data: parameters to the controler
dataType: "html",
success: your function
});
o
$('your selector').load('your controller path')
Actualizar
En su ajax llamado haga este cambio para pasar los datos a la acción
function onDropDownChange(e) {
var url="/Home/Index"
$.ajax({
type: "GET",
url: url,
data: { id = e.value}, <--sending the values to the server
dataType: "html",
success : function (data) {
//put your code here
}
});
}
ACTUALIZACIÓN 2
No puede hacer esto en su devolución de llamada ‘windows.location’ si desea que vaya a renderizar una vista, debe poner un div
en tu vista y haz algo como esto
en la vista donde estas que tienes el combo en algun lugar
<div id="theNewView"> </div> <---you're going to load the other view here
en el cliente javascript
$.ajax({
type: "GET",
url: url,
data: { id = e.value}, <--sending the values to the server
dataType: "html",
success : function (data) {
$('div#theNewView').html(data);
}
});
}
Con esto creo que resuelves tu problema
Dentro de tu onDropDownChange
handler, simplemente haga una llamada jQuery AJAX, pasando cualquier dato que necesite pasar a su URL. Puede manejar llamadas exitosas y fallidas con el success
y error
opciones. En el success
opción, utilice los datos contenidos en la data
argumento para hacer cualquier renderizado que necesite hacer. Recuerde que estos son asincrónicos por defecto.
function onDropDownChange(e) {
var url="/Home/Index/" + e.value;
$.ajax({
url: url,
data: {}, //parameters go here in object literal form
type: 'GET',
datatype: 'json',
success: function(data) { alert('got here with data'); },
error: function() { alert('something bad happened'); }
});
}
La documentación AJAX de jQuery está aquí.
tratar:
var url="/Home/Index/" + e.value;
window.location = window.location.host + url;
Eso debería llevarte a donde quieras.