Чтобы передать данные на сервер, просто сохраните их в скрытых полях формы (в панели обновления):
<asp:HiddenField id="score" runat="server" name="Score" ClientIDMode="Static" />
<asp:HiddenField id="id" runat="server" name="Score" ClientIDMode="Static" />
Если бы у вас было много данных для передачи туда и обратно, возможно, это имело бы смыслпросто использовать одно скрытое поле и использовать сериализацию / десериализацию, чтобы хранить все это там.Затем в вашей функции onClick
установите значения этих полей и инициируйте асинхронную обратную передачу:
$('#score').val(score);
$('#id').val(id);
__doPostBack('UpdatePanelID', '')
Это приведет к асинхронному обновлению вашего UpdatePanel
, так же, как если бы связанный элемент управления отправки былщелкнул пользователем.
Обратите внимание, что если сам элемент управления jQuery находится в UpdatePanel
, вам придется перенастроить его после асинхронной обратной передачи, поскольку эффект такой же, как если бы страница была перезагружена так далекокак это касается.Однако любой код javascript, который вы могли запустить в $(document).ready()
, не будет запускаться после асинхронной обратной передачи, поскольку вся страница фактически не была перезагружена.
В идеале, сохраняйте контроль рейтингаза пределами панели обновлений, поскольку вы, вероятно, не хотите, чтобы она изменялась в результате инициированного события.Если по какой-то причине это невозможно или вам просто нужен динамический способ его настройки при первом отображении, добавьте ловушку в конце обновления страницы:
// Page startup script - this adds a hook after an update panel is refreshed
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onRefresh);
function onRefresh(sender, args) {
// You can try to check which panel was updated
var panelsUpdated = args.get_panelsUpdated();
var panelsCreated = args.get_panelsCreated();
// but usually it's easier to just track the state of your jquery stuff
if (my_jquery_thing_is_visible &&
my_indicator_that_it_has_already_been_configured===false) {
configureJqueryThing();
}
}