Использование пользовательских данных jqGrid

У меня есть jqGrid в представлении ASP.Net MVC. Я хочу использовать для передачи значения скрытого текстового элемента управления на странице в качестве дополнительного параметра методу jqGrid.

У меня есть следующее скрытое текстовое поле:

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

и я хочу сделать что-то вроде:

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

в вызове jqGrid. Метод действия контроллера имеет следующую сигнатуру:

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

Но когда я запускаю его, userdata в коде C# просто говорит System.Object, когда я проверяю его в отладчике, и я не думаю, что смогу извлечь из него что-то полезное.

Есть идеи, где я ошибся?


person Colin Desmond    schedule 11.06.2009    source источник


Ответы (1)


Нужное вам свойство jqGrid — postData. UserData идет другим путем.

Измените свой вызов JqGrid, чтобы включить:

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

Затем измените подпись своего действия, чтобы получить contactId:

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

Я угадал тип. Используйте реальный тип вместо int.

person Craig Stuntz    schedule 11.06.2009
comment
contactId - это Guid, закодированный в строку, когда у меня есть строка contactId в подписи, я получаю следующее строковое значение: [object HTMLInputElement]. Я предполагаю, что мне нужно получить значение элемента jQuery('#contactId'), а не самого элемента. К сожалению, я совершенно новичок в jQuery/JavaScript и не знаю, как это сделать! - person Colin Desmond; 11.06.2009
comment
Понятно! Необходимо иметь postData: {contactId : jQuery('#contactId').val()}, чтобы получить строковое представление Guid. Большое спасибо. - person Colin Desmond; 11.06.2009
comment
Вы можете изменить строку -> привязка Guid и MVC преобразует ее для вас. - person Craig Stuntz; 11.06.2009