我不知道这是否有帮助,但我更改了表单上每个输入的名称,我想在提交表单之前使用 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 相关的输入中的数据,无论它们是否被修改表格。
另一种选择是绑定一些按钮以使用 Web 服务来处理您的数据库交互,然后调用 window.location 来刷新页面。
$.ajax({
网址:“网络服务/数据库功能?”
数据:{按下了哪个 btn,一些表单值等...}
成功:function() {window.location("samepage.aspx?id=xxx");}
...
});
这也将避免必须在服务器端响应重定向。