2012-07-22 10 views
15

Tengo un método de javascript onRowSelected que obtiene rowid. ¿Cómo pasar el rowid en cierta acción de un controlador con HttpGet?Javascript url action en navaja de afeitar

function onRowSelected(rowid, status) { 
     alert('This row has id: ' + rowid); 
     //url: @Action.Url("Action","Controller") 
     //post:"GET" 
     // Something like this? 
    } 

Respuesta

39

Si su acción del controlador espera un parámetro de cadena de consulta id:

var url = '@Url.Action("Action", "Controller")?id=' + rowid; 

o si desea pasar como parte de la ruta se puede usar reemplazar:

var url = '@Url.Action("Action", "Controller", new { id = "_id_" })' 
    .replace('_id_', rowid); 

todavía otra posibilidad si va a enviar una solicitud AJAX es pasarla como parte del cuerpo POST:

$.ajax({ 
    url: '@Url.Action("Action", "Controller")', 
    type: 'POST', 
    data: { id: rowid }, 
    success: function(result) { 

    } 
}); 

o como un parámetro de cadena de consulta si está utilizando GET:

$.ajax({ 
    url: '@Url.Action("Action", "Controller")', 
    type: 'GET', 
    data: { id: rowid }, 
    success: function(result) { 

    } 
}); 

Todos aquellos suponga que su acción de controlador toma un parámetro id del curso:

public ActionResult Action(string id) 
{ 
    ... 
} 

Así como se puede ver de muchas maneras para lograr el mismo objetivo.

+0

Me pregunto por qué la primera respuesta no funciona. Las respuestas ajax funcionan bien. – nebula

+0

¿Cómo se ve la url generada final en el código fuente? –

+0

No se desencadena ningún evento incluso en Firebug. La URL no cambia – nebula

Cuestiones relacionadas