0

我有一个 aspx 页面,其中包含 4 个多视图控件和每个控件中的不同视图。在详细信息视图的第一个视图中,我正在输入一些发票详细信息并检查数据库中的数据行是否与付款详细信息一起出现。

代码工作正常,直到它显示数据行以及支付控件,但支付控件(用户控件)没有正确触发其验证控件(必需的字段和正则表达式控件)。除了单击按钮外,也不会触发验证码,尽管如果我输入正确的详细信息,它会保存数据。

你们中的任何人都可以查看下面的代码并告诉我其中有什么问题吗?

    Protected Sub cmdPay_Click(sender As Object, e As EventArgs) Handles cmdPay.Click
        mvwDetails.Visible = False
        Try

            '  If Not Page.IsPostBack Then

            If Me.CreditCard1.CCNumber.Length < 14 Or Me.CreditCard1.CCNumber.Length > 16 Then
                Me.lblError.Text = "Please enter Valid Card details"

            Else
                Dim result As DateTime = Conversions.ToDate("1/1/1900")
                If Not DateTime.TryParse(Me.CreditCard1.CCExpireDate, result) Then
                    Me.lblError.Text = "Please enter the Valid Expiry Date"
                    Me.lblError.Visible = True
                    ' mvwMakePayment.Visible = True
                    ' mvwMakePayment.SetActiveView(vwMakePayment)
                ElseIf DateTime.Compare(result, DateTime.Today) < 0 Then
                    Me.lblError.Text = "Please enter the Valid Expiry Date"
                    Me.lblError.Visible = True
                    ' mvwMakePayment.Visible = True
                    ' mvwMakePayment.SetActiveView(vwMakePayment)
                ElseIf Me.CreditCard1.CVV Is Nothing Or Not Versioned.IsNumeric(DirectCast(Me.CreditCard1.CVV, Object)) Then
                    Me.lblError.Text = "Invalid credit card details."
                    Me.lblError.Visible = True
                    ' mvwMakePayment.Visible = True
                    ' mvwMakePayment.SetActiveView(vwMakePayment)
                ElseIf Strings.Len(Me.CreditCard1.CVV) > 4 Then
                    Me.lblError.Text = "Invalid cvv number."
                    Me.lblError.Visible = True
                    ' mvwMakePayment.Visible = True
                    ' mvwMakePayment.SetActiveView(vwMakePayment)
                Else
                    Dim OrderID As String
                    OrderID = grdMain.Items(0).Cells(1).Text
                    If Page.IsValid Then
                        Dim dtOrderPerson As DataTable = Me.DataAction.GetDataTable("SELECT o.ID,o.BillToID,o.ShipToName,o.BillToCompanyID,o.OrganizationID,o.InvoiceNumber,OrderDate,GrandTotal,Balance,CurrencySymbol,NumDigitsAfterDecimal FROM " & Convert.ToString(Me.Database) & "..vwOrders o INNER JOIN " & Convert.ToString(Me.Database) & "..vwCurrencyTypes ct ON o.CurrencyTypeID=ct.ID where  Balance > 0 AND o.OrderStatus <> 'Cancelled' And o.ID=" & CLng(OrderID), IAptifyDataAction.DSLCacheSetting.BypassCache)
                        If dtOrderPerson.Rows.Count > 0 Then
                            Me.mvwMakePayment.SetActiveView(vwMakePayment)
                            Me.mvwMakePayment.Visible = True
                            'lblkaj.Text = "returned a record"
                            FirstName = dtOrderPerson.Rows(0).Item("ShipToName").Trim.ToString()
                            Dim entityObject As AptifyGenericEntityBase = Me.AptifyApplication.GetEntityObject("Payments", -1)
                            entityObject.SetValue("EmployeeID", DirectCast(1, Object)) 'No web user is returned as the data is based on orderid and companyid ,  Employee id of the web user is 1 hence using the same 
                            ' entityObject.SetValue("EmployeeID", DirectCast(grdMain.Items(0).Cells(0).ToString(), Object))
                            entityObject.SetValue("PersonID", DirectCast(dtOrderPerson.Rows(0).Item("BillToID").ToString, Object))
                            entityObject.SetValue("CompanyID", DirectCast(dtOrderPerson.Rows(0).Item("BillToCompanyID").ToString, Object)) 'Me.dtOrders.Rows(0).Item("BilllToCompanyID").ToString
                            entityObject.SetValue("PaymentDate", DirectCast(DateTime.Today, Object))
                            entityObject.SetValue("DepositDate", DirectCast(DateTime.Today, Object))
                            entityObject.SetValue("EffectiveDate", DirectCast(DateTime.Today, Object))
                            entityObject.SetValue("PaymentTypeID", DirectCast(Me.CreditCard1.PaymentTypeID, Object))
                            entityObject.SetValue("CCAccountNumber", DirectCast(Me.CreditCard1.CCNumber, Object))
                            entityObject.SetValue("CCExpireDate", DirectCast(Me.CreditCard1.CCExpireDate, Object))
                            entityObject.SetAddValue("_xCCSecurityNumber", DirectCast(Me.CreditCard1.CVV, Object))
                            entityObject.SetValue("PaymentLevelID", DirectCast(1, Object))
                            '  entityObject.SetValue("Comments", DirectCast("Created through the CGI e-Business Suite", Object))
                            entityObject.SetAddValue("_xConvertQuotesToRegularOrder", DirectCast("1", Object))
                            Dim genericEntityBase As AptifyGenericEntityBase = entityObject.SubTypes("PaymentLines").Add()
                            genericEntityBase.SetValue("Amount", DirectCast(dtOrderPerson.Rows(0).Item("Balance").ToString, Object))
                            genericEntityBase.SetValue("OrderID", DirectCast(dtOrderPerson.Rows(0).Item("ID").ToString, Object))
                            genericEntityBase.SetValue("Comments", DirectCast("Invoice paid from web", Object))
                            If entityObject.Save(True) Then
                                Dim dtPyments As DataTable = Me.DataAction.GetDataTable("select P.ID,P.PersonID,P.CompanyID,P.PaymentDate,Pl.OrderID,Pl.Amount from payment P inner join paymentdetail pl on P.id=Pl.paymentid where pl.orderid=" & CLng(OrderID))
                                ' Me.grdReceipt.DataSource = DirectCast(dtPyments, Object)
                                '  grdReceipt.DataBind()
                                '  grdReceipt.Visible = False
                                lblInvo.Text = OrderID


                                lblPyNo.Text = dtPyments.Rows(0).Item("ID").ToString()
                                lblAmount0.Text = dtPyments.Rows(0).Item("Amount").ToString()
                                Dim amnt As Double = lblAmount0.Text
                                amnt = FormatNumber(amnt, 2)
                                lblAmount0.Text = amnt

                                ' EmailID = txtEmail.Text.Trim.ToString
                                mvwMakePayment.Visible = False
                                mvwMessage.Visible = True
                                mvwMessage.SetActiveView(vwSuccessMessage)
                                Dim mailBody As New StringBuilder
                                mailBody.Append("Dear " & FirstName & ", ").AppendLine(Environment.NewLine)
                                mailBody.Append("Thank you, for your payment of invoice number " & lblInvo.Text & ". $ " & lblAmount0.Text & " " & "has been deducted from your nominated credit card. ").AppendLine(Environment.NewLine)
                                mailBody.Append("Your receipt number is " & lblPyNo.Text & ". Please keep this for your reference.").AppendLine(Environment.NewLine)
                                mailBody.Append("If you have any queries regarding this payment please contact our Accounts Receivable department on 04456666 and reference your invoice number.").AppendLine(Environment.NewLine)

                                ' mailBody.Append("Receipt Number :  " & lblPyNo0.Text)
                                sendEmail("Accounts Department", lblEmail.Text, "Payment Receipt’", mailBody.ToString)
                                ' lblEmail.Text = EmailID
                            Else
                                mvwMessage.Visible = True
                                mvwMessage.SetActiveView(vwFailedMessage)
                            End If
                        End If
                    End If
                End If
            End If
            'End If
        Catch ex As ThreadAbortException
            ExceptionManager.Publish(ex)
            ProjectData.SetProjectError(DirectCast(ex, Exception))
            ProjectData.ClearProjectError()
        Catch ex As Exception
            ProjectData.SetProjectError(ex)
            ExceptionManager.Publish(ex)
            ProjectData.ClearProjectError()
        End Try
    End Sub
4

1 回答 1

0

检查您是否有适当的验证组,如果您有条件地设置导致验证也可能发生,如果这样也检查。

于 2013-04-30T08:58:46.463 回答