Ваш код функционален, но, возможно, поможет некоторая настройка для удобства обслуживания.Также не уверен, что вам обязательно понадобятся вложенные циклы для загрузки выпадающих элементов.
Это должно быть просто точкой отсчета для принятия собственных решений относительно практики кодирования.Конечно, то, что работает для одних, не работает для других.
Вот как я могу написать это ...
Управление ASP.NET:
<asp:CheckBoxList ID="CheckBoxListHomeType" runat="server"
CssClass="chkbox" RepeatLayout="Flow" CausesValidation="True" />
...
- ID
CheckBoxListHomeType
легко запомнить, и intellisense поможет мне до конца.(или другой общий подход будет cblHomeType
в качестве идентификатора).Получить intellisense, чтобы помочь с таким именем, как rh_type
, может быть так же просто, но идентификаторы, которые напоминают, какой это элемент управления, могут реально помочь при поддержке кода
VB.NET:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
LoadHomeTypes()
End If
End Sub
Protected Sub LoadHomeTypes()
Dim houseTypes = "House,Bungalow,Flat/Apartment,Any"
For Each houseType As String In houseTypes.Split(",")
CheckBoxListHomeType.Items.Add(New ListItem(houseType))
Next
End Sub
- Хранение логики в отдельной функции
LoadHomeTypes
может сделать код более читабельным. - Создание нового
ListItem
при повторении списка homeTypes
должно устранить необходимость повторенияповерх элементов CheckBoxList (если вам нужно очистить существующие, вы можете добавить CheckBoxListHomeType.Items.Clear()
в начало функции) - проверка
Not Page.IsPostBack
предотвращает необходимость загрузки раскрывающихся значений при каждой обратной передаче, если вам не нужно их менять.