У меня есть простая страница поиска в моем представлении индекса с выпадающим списком и текстовым полем. Я хотел бы запомнить предпочтения пользователя для выпадающего списка, поэтому я сохраняю его в таблице и извлекаю по мере необходимости. Вот функция контроллера:
Function Index(ByVal lob As String, ByVal filter As String) As ActionResult
If If(lob, "") = "" Then
lob = GetUserPreferenceLob()
End If
ViewData("lob") = New SelectList(GetLobValues(), "Value", "Text", lob)
ViewData("message") = lob
Return View()
End Function
Вид выглядит так:
<% Using Html.BeginForm()%>
Line of Business:
<%=Html.DropDownList("lob", Nothing, New With {.onchange = "document.forms[0].submit()"})%>
Search:
<%=Html.TextBox("filter")%>
<img src="..." alt="Search" onclick="document.forms[0].submit()" />
<%=ViewData("message")%>
<% End Using%>
Когда я запускаю приложение (это страница по умолчанию), оно успешно загружает список и выбирает элемент пользователя. Однако, если я перейду на страницу, например, по ссылке в другом месте на странице, он загружает список, но по умолчанию выбирает первый элемент. Я запустил отладчик, и он всегда проходит через функцию Index, и в соответствии с выводом «message» он всегда передает правильное значение, которое будет выбрано, так почему этот сценарий не выбирает правильную запись в списке?
Обновление: У меня есть другие данные в форме, которые зависят от выбранного значения из раскрывающегося списка. При переходе на страницу по ссылке остальная часть страницы ведет себя так, как будто выбран соответствующий элемент, но раскрывающийся список по умолчанию идет вверх. Другими словами, если в моем раскрывающемся списке указаны значения «A», «B» и «C», и я выбрал «C», а затем нажмите на ссылку, которая перезагружает страницу, в раскрывающемся списке отображается «A», а остальные страница содержит данные для "C".