-2

テキストボックスに入力されたデータが正しい場所であるかどうかをチェックするカスタム検証を記述したユーザーコントロールがあります。ボタンをクリックすると、(page.IsValid)ビットをチェックしました

検証が失敗した場合でも、ユーザーコントロールが追加されたページ全体をリロードします

カスタム検証は次のようになります。

   <asp:CustomValidator id="CustomValidator1"  runat="server" Width="102px" Style="margin-left:37px !important" OnServerValidate="TextValidate" ControlToValidate="txtLocationId" ErrorMessage="Incorrect Location.">
  </asp:CustomValidator>

UserControl.aspx.cs :->

protected void TextValidate(object source, ServerValidateEventArgs args)
        {
            string value = string.Empty;
            dbconfig.conDatabase2.Open();
            SqlCommand cmdsqlcmd = new SqlCommand();
            cmdsqlcmd.CommandType = CommandType.Text;
            string locID = args.Value.ToString();
            cmdsqlcmd.CommandText = "";
            cmdsqlcmd.Connection = dbconfig.conDatabase2;

            Object ob = cmdsqlcmd.ExecuteScalar();
            if (ob == null)
            {
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
            }
        }

ボタンクリック時:

protected void goButton_OnClick(object sender, EventArgs e) { if (Page.IsValid) { コードはここに... } }

aspx ページ:

<%@ Register Src="UserControl/UserControlFilter.ascx" TagName="UserControlFilter"
    TagPrefix="uc1" %>
<html>
<body>
    <form id="form1" runat="server">
    <AjaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </AjaxToolkit:ToolkitScriptManager>
    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="300000">
    </asp:Timer>

   <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                        </Triggers>
                        <ContentTemplate>
                          <div class="locadetail" id="bigtrends" style="border-radius:5px;width: 884px; z-index: 100; border-width: 1px;
                                margin: 10px; height: 398px !important; float: left; background-color: #fff !important;">
                            </div>
                        </ContentTemplate>
                    </asp:UpdatePanel>
</form>
</body>
</html>

どこか間違っている場合はお知らせください

ありがとう

4

3 に答える 3

1

カスタム検証には、1. クライアント側と 2. サーバー側の 2 つのモードがあります。サーバー側の検証のみを使用している場合、ページはチェックなしでポストバックされます。また、Page Validation イベントの前に Page load が発生するため、クライアント検証機能を追加します。これにより、テストが検証されます。チェックする必要があるデータがサーバー上でのみ利用可能である場合は、Web サービスを使用して検証します。

<SCRIPT LANGUAGE="JavaScript"> function TextValidate(oSrc, args){ // validation logic

}

<asp:CustomValidator id="CustomValidator1" runat="server" Width="102px" Style="margin-left:37px !important" OnServerValidate="TextValidate" ControlToValidate="txtLocationId" ErrorMessage="Incorrect Location." ClientValidationFunction="TextValidate" > </asp:CustomValidator>

于 2013-05-20T07:09:32.003 に答える
0

サーバー側の検証 (TextValidate) ではarguments.IsValid、検証が失敗した場合に備えて false に設定する必要があります

于 2013-05-20T06:51:11.973 に答える