Если вы опубликовали ASelected (), BSelected (), CSelected () и ddl_view0_WULValue (), это помогло бы больше. Без этого я не смогу определить , почему это происходит. Я думаю, из-за отсутствия состояния в веб-приложении. Когда вы пытаетесь установить переменные в коде страницы, объекты остаются только во время этой обратной передачи (в данном случае, при нажатии кнопки). В следующий раз, когда произойдет нажатие кнопки, все эти данные личных переменных вашей страницы исчезнут.
Однако состояние выпадающего списка будет поддерживаться между постбеками, поэтому вы можете напрямую запросить раскрывающийся список, чтобы узнать, что было выбрано. Вместо BSelected() = 1
я изменил его на ddl_view0.SelectedValue = "B"
Я предположил, что именно так выглядела ваша aspx-страница. Обратите внимание на использование свойств Text и Value в ListItem. Мы будем использовать свойство Value в коде, чтобы найти то, что выбрано.
<asp:MultiView runat="server" ID="mvRequestorForm" ActiveViewIndex="0"
<asp:View ID="View1" runat="server">
1
<asp:DropDownList ID="ddl_view0" runat="server">
<asp:ListItem Text="Item A" Value="A"></asp:ListItem>
<asp:ListItem Text="Item B" Value="B"></asp:ListItem>
<asp:ListItem Text="Item C" Value="C"></asp:ListItem>
<asp:ListItem Text="Item D" Value="D"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btn_View0_Next" runat="server" Text="Next" />
</asp:View>
<asp:View ID="View2" runat="server">
2
<asp:Button ID="btn_View1_Next" runat="server" Text="Next" />
<asp:Button ID="btn_view1_back" runat="server" Text="Back" />
</asp:View>
<asp:View ID="View3" runat="server">
3
<asp:Button ID="btn_view2_Next" runat="server" Text="Next" />
<asp:Button ID="btn_view2_back" runat="server" Text="Back" />
</asp:View>
<asp:View ID="View4" runat="server">
4
<asp:Button ID="btn_view3_back" runat="server" Text="Back" />
</asp:View>
</asp:MultiView>
Я изменил ваш код, чтобы избавиться от всех вызовов ASelected (), BSelected, CSelected и dll_view0_WULValue () и просто использовал раскрывающийся список напрямую.
Protected Sub btn_view1_back_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_view1_back.Click, btn_view2_back.Click, btn_view3_back.Click
'Try'
If mvRequestorForm.ActiveViewIndex = 3 And ddl_view0.SelectedValue = "B" Then 'CHANGED to use the SelectedValue property of the dropdownlist because it keeps state properly'
mvRequestorForm.ActiveViewIndex -= 2 'CHANGED to a cleaner way to decrement by 2'
Else
mvRequestorForm.ActiveViewIndex -= 1 'CHANGED to a cleaner way to decrement by 1'
End If
If mvRequestorForm.ActiveViewIndex = 1 Then 'NOTE: This is now at least one less than when the method started. Is this what you really wanted?'
If (ddl_view0.SelectedValue = "C") Then 'CHANGED to use the SelectedValue property of the dropdownlist because it keeps state properly'
strRoleType = "chkBx_C_workunit"
ElseIf (ddl_view0.SelectedValue = "A") Then 'CHANGED to use the SelectedValue property of the dropdownlist because it keeps state properly'
strRoleType = "chkBx_A_workunit"
ElseIf (ddl_view0.SelectedValue = "B") Then 'CHANGED to use the SelectedValue property of the dropdownlist because it keeps state properly'
strRoleType = "chkBx_B_workunit"
End If
'NOTE: There seemed to be a duplicate case for "B" here, so I removed it'
End If
'Catch ex As Exception'
'Commented out Try/Catch because empty catches hide bugs and make development harder'
'End Try'
End Sub
Protected Sub btn_View0_Next_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_View0_Next.Click, btn_View1_Next.Click, btn_view2_Next.Click
'Try'
If mvRequestorForm.ActiveViewIndex = 1 And ddl_view0.SelectedValue = "B" Then
mvRequestorForm.ActiveViewIndex += 2 'CHANGED to a cleaner way to increment by 2'
rfv_view2_managersEmail.Enabled = True
rev_view2_managersEmail.Enabled = True
Else
mvRequestorForm.ActiveViewIndex += 1 'CHANGED to a cleaner way to increment by 1'
End If
If mvRequestorForm.ActiveViewIndex = 1 Then 'NOTE: This is now at least one more than when the method started. Is this what you really wanted?'
'Sub_ActivateView1()'
End If
'Catch ex As Exception'
'Commented out Try/Catch because empty catches hide bugs and make development harder'
'End Try'
End Sub
Я не знаю, для чего предназначен strRoleType, но, вероятно, это тоже не будет работать правильно. Если это не так, попробуйте добавить элемент управления HiddenField в форму и использовать его для хранения значения.