2009-06-11 22 views
6

Tengo una jqGrid en una vista ASP.Net MVC. Quiero utilizar para pasar el valor de un control de texto oculto en la página como un parámetro adicional a un método jqGrid.Uso de datos de usuario de jqGrid

Tengo el siguiente campo de texto oculto:

<div> 
<%= Html.Hidden("contactId", Model.ContactId) %> 
</div> 

y quiero hacer algo como:

userdata: {contactId : jQuery('#contactId')} 

en la llamada jqGrid. El método Action Controller tiene la siguiente firma:

public ActionResult SearchResult(string sidx, string sord, int page, int rows, object userdata) 

Pero cuando lo ejecuto, userdata en el código C# sólo dice System.Object cuando inspeccionarlo en el depurador, y no creo que puedo conseguir anythings útil cabo de eso

¿Alguna idea de dónde me he equivocado?

Respuesta

6

La propiedad jqGrid que desea es postData. UserData va por el otro camino.

Cambiar la llamada a jqGrid incluir:

postData: {contactId : jQuery('#contactId').val()} 

a continuación, cambiar la firma de su acción a tomar un contactId:

public ActionResult SearchResult(string sidx, string sord, int page, int rows, 
    int contactId) 

adiviné el tipo. Use el tipo real en lugar de int.

+0

contactId es un Guid codificado en una cadena, cuando tengo string contactId en la firma obtengo el siguiente valor de cadena: "[object HTMLInputElement]". Supongo que necesito obtener el valor del elemento jQuery ('# contactId') en lugar del elemento en sí. Lamentablemente, soy completamente nuevo en jQuery/JavaScript y no sé cómo hacerlo. –

+1

¡Entendido! Necesita tener postData: {contactId: jQuery ('# contactId'). Val()} para obtener la representación de cadena del Guid. Muchas gracias. –

+2

Puede cambiar la cadena -> El enlace Guid y MVC lo convertirá por usted. –

Cuestiones relacionadas