2009-06-11 9 views
6

Ich habe ein jqGrid in einer ASP.Net MVC-Ansicht. Ich möchte verwenden, um den Wert eines ausgeblendeten Textsteuerelements auf der Seite als zusätzlichen Parameter an eine jqGrid-Methode zu übergeben.Verwenden von jqGrid userdata

Ich habe folgende versteckte Textfeld:

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

und ich möchte, wie etwas zu tun ist:

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

im jqGrid Anruf. Die Controller Aktion Methode hat die folgende Signatur:

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

Aber wenn ich es laufen, userdata im C# -Code sagt nur System.Object, wenn ich es im Debugger untersuchen, und ich glaube nicht, dass ich anythings nützlich heraus bekommen davon.

Irgendwelche Ideen, wo ich falsch gelaufen bin?

Antwort

6

Die gewünschte jqGrid-Eigenschaft ist postData. UserData geht in die andere Richtung.

Ihren Anruf JqGrid ändern schließen:

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

dann die Unterschrift Ihrer Aktion ändern, um eine ContactID zu nehmen:

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

ich an der Art erraten. Benutze den reellen Typ anstelle von int.

+0

contactId ist eine Guid in eine Zeichenfolge codiert, wenn ich Zeichenfolge contactId in der Signatur habe ich den folgenden Zeichenfolgenwert erhalten: "[Objekt HTMLInputElement]". Ich nehme an, ich muss den Wert des jQuery ('# contactId') Elements und nicht das Element selbst erhalten. Leider bin ich komplett neu in jQuery/JavaScript und weiß nicht wie ich das machen soll! –

+1

Verstanden! Sie müssen postData: {contactId: jQuery ('# contactId'). Val()} haben, um die Zeichenfolgendarstellung der GUID zu erhalten. Danke vielmals. –

+2

Sie können String ändern -> Guid und MVC-Bindung wird es für Sie konvertieren. –