【发布时间】:2009-05-18 15:51:19
【问题描述】:
美好的一天,
我们已将 Web 应用程序从 ASP.NET 1.1 迁移到 ASP.NET 2.0。
我们有一个页面,其中包含几个带有各自验证器的文本框。
在 .NET 1.1 上,当文本框包含 INVALID 值时,单击“提交”按钮不会产生回发(例如,什么都不会发生)。
但是,当我们迁移到 .NET 2.0 时,即使存在 INVALID 值,回发仍然会发生。 (例如,按下“提交”按钮将执行回发)。
从 1.1 迁移到 2.0 时是否存在验证问题?
附加信息: “提交”按钮是一个输入按钮:
<input type="button">
使用<asp:button> 代替<input> 按钮将起作用并解决问题。但是,<input type="button"> 能够调用 javascript,该 javascript 将在页面上生成“Wait...Loading”标签覆盖。使用 asp:button,“等待...加载”覆盖 JavaScript 将不会被调用。
编辑:真正的问题和解决方案。
无论如何,真正的问题是点击验证 javascript 在迁移过程中被破坏了。
原来的工作脚本是:
<input language="javascript" onclick="{if (typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) __doPostBack('m_bt_Save','')} " name="m_bt_Save" id="m_bt_Save" type="button" value="Save" width="80px" height="24px" />
但 ASP.NET 2.0 将其更改为:
<input onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(''); __doPostBack('m_bt_Save','')" name="m_bt_Save" type="button" id="m_bt_Save" value="Save" width="80px" height="24px" />
所以我的解决方案是,将 INPUT 按钮更改为 ASP:button,然后使用正确的 ASP.NET 1.1 javascript 验证添加执行页面加载的属性,如下所示:
m_bt_Save.Attributes.Add("OnClick", "if (typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) __doPostBack('m_bt_Save','')");
【问题讨论】:
标签: asp.net validation migration