Я не знаю, помогает ли это, но я изменяю имя каждого ввода в форме, для которого я хочу получить свежие значения, используя javascript перед отправкой формы, поскольку страница .net больше не может соответствовать значениям из формы в элементы управления для страницы, она перезагружает их, как будто не было обратной передачи. я также добавляю новое значение в форму, чтобы знать, какая кнопка отправила форму, и использую эту логику, чтобы решить, что загружать во все элементы управления и как, конечно, обрабатывать данные формы.
$("#Bset").children().click(function() { //all the btns click function
$.each($("form").find("input"), function(e,v) { //could filter this to subset of inputs
$(v).attr("name", "_" + $(v).attr("name")); // ctrl1 becomes _cntrl1
});
$("form").append("<input type='hidden' id='b' name='b' value='" + $(this).text() + "' />").submit();
});
затем в коде
protected void Page_Init(object sender, EventArgs e)
{
id = int.Parse(Request.QueryString["id"]);
bk = db.dc.getDetailBK(id).Single();
if (Request.Form.Count > 0)
doPostBack();
mrl = (from a in db.dc.getMetricQTD(id, null, null, loadSavedGoals) select a).ToList();
}
Затем я могу делать в dopostback такие вещи, как обработка данных формы, взаимодействие с БД и т. Д., Которые могут изменять значения, загружаемые в mrl, и обновлять данные во входах, связанных с mrl, независимо от того, были ли они изменены или нет форма.
другой альтернативой было бы связать некоторые кнопки, чтобы использовать веб-сервис для обработки вашего взаимодействия с БД, а затем вызвать window.location для обновления страницы.
$. Аякс ({
url: "webservice / dbfunction?"
данные: {которые нажали btn, некоторые значения формы и т. д.}}
success: function () {window.location ("samepage.aspx? id = xxx");}
...
});
это также позволит избежать переадресации ответа на стороне сервера.