我知道这个问题对于某些人来说可能非常容易,所以请不要为询问而烦恼,但是我一直在努力找出答案:
我想通过其他方法使用IF Else语句中的条件,根据用户通过还是失败将用户重定向到不同的页面。这就是我的代码:
Public passScore As Boolean
Public Sub BindGrid()
.....
If calcTotal >= 70 Then
passScore = True
btnNext.Visible = True
Else
passScore = False
btnNext.Visible = False
End If
End Sub
这是我在努力的地方..在单击按钮后,能够使用计算结果来重定向用户:
Protected Sub btnNext_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNext.Click
If passScore = True Then
Response.Redirect(mstrPassSlide, False)
else
Response.Redirect(mstrFailSlide, False)
End If
Catch ex As Exception
Throw ex
Finally
End Sub
新代码更改
我尝试了以下建议,现在用于计算的数据库对象返回NULL。我将方法从“ Sub”更改为“ Function”
Public Function CalculateTotal() As Integer
Dim objDatabase As BTTQAResults
Try
objDatabase = CType(Cache("QAResults"), BTTQAResults)
Dim calcTotal As Integer
For index As Integer = 0 To objDatabase.Count - 1
calcTotal = calcTotal + objDatabase(index).Mark
Next
calcTotal = CInt((calcTotal / objDatabase.Count) * 100)
Part1QAResult.DataSource = objDatabase
Part1QAResult.DataBind()
Catch ex As Exception
ExceptionManager.Publish(ex)
Response.Redirect("~/Error.aspx", False)
End Try
End Function
objDatabase = CType(Cache(“ QAResults”),BTTQAResults)为NULL
答案 0 :(得分:2)
当您发现自己想在另一种方法中使用一种方法的一部分逻辑时,通常表明该逻辑应重构为自己的方法,以便可以在多个地方调用它。
在这种情况下,我们可以使用两个只读属性,例如:
Public ReadOnly Property CalcTotal() As Integer
Get
'Do some calculation here
Return result
End Get
End Property
Public ReadOnly Property PassScore() As Boolean
Get
Return CalcTotal >= 70
End Get
End Property
现在可以从类中的任何方法调用这些属性中的任何一个。
答案 1 :(得分:0)
您应该尝试在单击事件时调用BindGrid()方法。
Protected Sub btnNext_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNext.Click
BindGrid()
If passScore = True Then
Response.Redirect(mstrPassSlide, False)
End If
'Response.Redirect(mstrFailSlide, False)
Catch ex As Exception
Throw ex
Finally
End Sub
答案 2 :(得分:0)
您可能需要将逻辑分成较小的方法,以使代码可重用。或将其放在类中。
Public Function CalculateTotal() As Integer
' ...
End Function
Public Function IsTotalPassScore() As Boolean
Return CalculateTotal() >= 70
End Function
Public Sub BindGrid()
If IsTotalPassScore() Then
btnNext.Visible = True
Else
btnNext.Visible = False
End If
End Sub
Protected Sub btnNext_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNext.Click
If IsTotalPassScore() Then
Response.Redirect(mstrPassSlide, False)
End If
Response.Redirect(mstrFailSlide, False)
End Sub
如果计算需要花费一些时间,则可以在OnInit中完成并将结果存储在某个地方。