Win*_*ett 6 javascript asp.net ajax webforms asp.net-ajax
我有一个表单,为了隔离问题,它有大约十几个纯HTML复选框(不是WebControls),所有这些都被禁用.他们在里面UpdatePanel.
我有一个电话链接
__doPostBack('a-control','my-custom-argument');
根据我提供的第一个参数,页面可以执行完整postback或部分参数.
当我完成时postback,在帖子中没有提交任何复选框值(因为它们被禁用).这是正常的,因而也是期望的行为.
但是,当它执行部分操作时postback,脚本会从我的复选框中收集所有值并提交它们,而不指示哪些值被禁用,这会破坏我的代码.
这很烦人,我希望它表现得一致.反正有没有告诉.NET javascript处理程序以世界其他地方的方式工作,而不是 禁用的 HTML表单元素postback的值?
我可以建议两个选择:
1) 您可以name在进行回发之前使用 JavaScript 删除禁用控件的属性。
2)Sys.WebForms.PageRequestManager.getInstance()._onFormSubmit使用更正的代码版本覆盖。只需复制实现MicrosoftAjaxWebForms.debug.js,添加属性的处理disabled并将更正后的函数附加到现有的 PageRequestManager 对象:
Sys.WebForms.PageRequestManager.getInstance()._onFormSubmit = 函数...
然后将此 JS 块注册为启动脚本。获得渲染脚本块的正确顺序非常重要。我在 ScriptManager 的子类中做了类似的事情:
protected override void OnResolveScriptReference(ScriptReferenceEventArgs e) {
base.OnResolveScriptReference(e);
if (e.Script.Name.StartsWith("MicrosoftAjax"))
Page.ClientScript.RegisterStartupScript(GetType(), "My patch", MyPatchJs, true);
}
Run Code Online (Sandbox Code Playgroud)
奇迹般有效!