0

このプロジェクトの特徴は、サーバー側の検証にエンタープライズ ライブラリを使用し、クライアント側の検証に 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 (コードの最後の 2 行) を追加する必要があります。しかしその後、次の状況が現れました。

InternetExplorer ((7) - IE のみ !!! - Firefox ではすべて正常に動作) 保存ボタンをクリックした後、テキスト ボックスの ProjectName を空のままにしておくと、クライアント側の jquery 検証が表示されますが、(!) とにかくページはサーバーに送信されます。

いくつかのメモ:

  1. ページから PropertyProxyValidator を削除すると、クライアント側の検証は IE で正しく機能しますが、特定のプロジェクトに必要です。
  2. 問題は、PropertyProxyValidator の追加後にフォームに挿入される関数 WebForm_OnSubmit() にあるようです。( ... <form name="aspnetForm" method="post" action="Project.aspx?TransType=NewProject" onsubmit="javascript:return WebForm_OnSubmit();" ...>)

誰か助けてください。

4

1 に答える 1

0

他の誰かがこの問題に遭遇した場合に備えて、jQuery を 1.4.2 にアップグレードしてください。これにより、このバグが修正されます。

于 2010-05-20T08:54:28.160 に答える