该项目的具体之处在于使用 Enterprise Library 进行服务器端验证和 jQuery 进行客户端验证。所以我有下一个简单的表格,例如:
<asp:Content ID="_mainContent" ContentPlaceHolderID="MainContent" runat="server">
<script src="../../../Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="../../../Scripts/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#aspnetForm").validate({
rules: {
"<%= _txtProjectName.UniqueID %>": {
required: true
}
}
});
});
</script>
<asp:TextBox ID="_txtProjectName" runat="server" CssClass="textBoxWithValidator_long" />
<entlib:PropertyProxyValidator id="_validatorProjectName" runat="server" ControlToValidate="_txtProjectName"
PropertyName="ProjectName" SourceTypeName="LabManagement.Project.Project" />
<asp:Button CssClass="cell_InlineElement" ID="_btnSave" runat="server" Text="Save" onclick="_btnSave_Click"
Width="50px" />
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
</asp:Content>
问题出在下一个:在我需要实现一些 AJAX.NET 功能之前,客户端验证工作正常。所以我必须添加到页面ScriptManager(代码中的最后两行)。但之后出现了下一个情况:
在 InternetExplorer((7) - 仅在 IE 中 !!! - 在 Firefox 中一切正常)单击保存按钮后,如果将文本框 ProjectName 留空,则会出现客户端 jquery 验证,但是(!)页面无论如何都会提交给服务器。
一些注意事项:
- 如果从页面中删除 PropertyProxyValidator - 客户端验证在 IE 中正常工作,但我需要它用于特定的项目。
- 似乎问题出在添加 PropertyProxyValidator 后插入表单的函数 WebForm_OnSubmit() 中。( ...
<form name="aspnetForm" method="post" action="Project.aspx?TransType=NewProject" onsubmit="javascript:return WebForm_OnSubmit();" ...>
)
任何人都可以帮忙,拜托。