2013-09-21 4 views
-2

Я использую asp.net vb, а веб-сайт находится на стороне клиента. Я не знаю, как выполнить этот расчет. На веб-сайте будет указан план оплаты. Срок составляет 12 месяцев, а минимальная сумма платежа - 25, но если они вводят более 25, все в порядке. 1. Если баланс меньше 25, тогда метка покажет им, что они не могут установить план pmt, но если я изменю его на величину баланса, ничего не произойдет, и он все еще показывает ошибку метки и не позволяет мне двигаться дальше, если я прав. 2. Как я могу убедиться, что пользователь находится между рекомендациями или они не могут перейти на страницу поздравлений? Ниже мой код, но он не работает, моя логика не работает. Может кто-то, пожалуйста, помогите мне с этим. Это страница по умолчанию:Может ли кто-нибудь помочь мне с логикой этого расчета?

<form id="form1" runat="server"> 
<div> 
Enter balance<br /> 
    <asp:TextBox ID="Balance" runat="server"></asp:TextBox> 
    <br /> 
    Enter amount to pay<br /> 
    <asp:TextBox ID="PmtAmount" runat="server" AutoPostBack="True"></asp:TextBox> 
    <br /> 
    <asp:Label runat="server" ID="lblError" Text=""></asp:Label> 
    <br /> 
    <br /> 
    <asp:Button ID="Button1" runat="server" Text="submit" Width="90px" /> 
</div> 
</form> 

Код позади:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    If Page.IsPostBack Then 
    End If 
End Sub 

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim pmt As Decimal 
    Dim bal As Decimal 
    Dim minpmt As Decimal 

    If Not Decimal.TryParse(Balance.Text, bal) OrElse _ 
     Not Decimal.TryParse(PmtAmount.Text, pmt) Then 
     lblError.Visible = True 
     lblError.Text = "Balance and Payment Amount must be a decimal" 
    Else 
     If bal < 25.0 Then 
      lblError.Visible = True 
      lblError.Text = "You can't set a pymt plan, please pay in full" 
     ElseIf pmt < 25.0 Then 
      lblError.Visible = True 
      lblError.Text = "min is 25.00" 
     ElseIf bal > 300.0 Then 
      minpmt = bal/12 
      lblError.Visible = True 
      lblError.Text = "your min pmt is " & Math.Round(minpmt, 2) 
     ElseIf pmt > (bal/12) Then 
      Response.Redirect("default2.aspx") 
     End If 
    End If 

ответ

1

Следующий псевдокод должно помочь вам начать работу в правильном направлении:

if balance is less than 25 then 
    show label with text "You can't set a payment plan" 
else if payment is less then 25 then 
    show label with text "Minimum payment is 25" 
else if paymentamount > balance/12 then 
    redirect to page 2 

Кроме того, делать такие вещи, как pmt = Balance.Text/TF является Опасный - если Balance.Text не является числовым, вы получите исключение.

Я предлагаю использовать Decimal.TryParse как на Balance.Text, так и на PmtAmount.Text, чтобы преобразовать текст в десятичную (или показать ошибку, если преобразование не выполнено).

EDIT

If Decimal.TryParse(Balance.Text, bal) < 25.0 Then не правильный способ использования Decimal.TryParse.

Decimal.TryParse возвращает логическое значение и сохраняет результат преобразования в выходной параметр, так что вам нужно сделать что-то вроде этого:

Dim bal As Decimal 

If Not Decimal.TryParse(Balance.Text, bal) Then 
    ' Set the error label letting the user know to enter a number 
End If 

Если преобразование было успешным, bal будет иметь результат преобразования , и вы можете использовать его позже в своем коде.

Вы можете изменить псевдо-код, приведенный выше, чтобы что-то вроде этого:

В двух словах, используйте Decimal.TryParse как на балансе и сумма платежа - если ни один не удается, отобразится сообщение об ошибке.

В противном случае (иначе) выполните оставшуюся часть проверки с использованием преобразованных значений, содержащихся в переменных out.

Код

Вы находитесь на правильном пути - ваш окончательный код будет выглядеть примерно так:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim TF As Decimal = 12 'TimeFrame 
    Dim Min As Decimal = 25 'Minimum payment plan amount 
    Dim pmt As Decimal 
    Dim bal As Decimal 

    If Not Decimal.TryParse(Balance.Text, bal) OrElse _ 
     Not Decimal.TryParse(PmtAmount.Text, pmt) Then 
     lblError.Visible = True 
     lblError.Text = "Balance and Payment Amount must be a decimal" 
    Else 
     If bal < 25.0 Then 
      lblError.Visible = True 
      lblError.Text = "You can't set a pymt plan, please pay in full" 
     ElseIf pmt < 25.0 Then 
      lblError.Visible = True 
      lblError.Text = "min is 25.00" 
     ElseIf pmt > (bal/12) Then 
      Response.Redirect("default2.aspx") 
     End If 
    End If 
End Sub 
+0

Я попробовал то, что вы предложили, но результат тот же она не работает , Его как страница не отправляет назад или что-то еще. Я ввожу 100,00 в качестве баланса и 25.00 в качестве суммы плана pmt, и он показал ярлык «Вы не можете установить план культа, пожалуйста, оплатите в полном объеме». – Lily

+0

Извините, вот мой код, и я также добавил decimal.TryParse – Lily

+0

@ user2644103 - отредактируйте свой ответ и поместите там код.Код не будет форматироваться в комментариях. – Tim

Смежные вопросы