У меня есть простая страница поиска по моему указателю с раскрывающимся списком и текстовым полем. Я хотел бы помнить о предпочтении пользователя для раскрывающегося списка, поэтому я сохраняю его в таблице и извлекаю его по мере необходимости. Вот функция контроллера:Непонятное поведение приложения ASP.NET MVC
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
The View выглядит следующим образом:
<% 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%>
Когда я начинаю приложение (это страница по умолчанию), она успешно загружает список и выбирает пункт пользователя. Однако, если перейти на страницу, например, по ссылке в другом месте на странице, она загружает список, но по умолчанию выбирает первый элемент. Я запустил отладчик, и он всегда выполняет функцию индекса, и в соответствии с выходом «message» он всегда передает правильное значение, которое нужно выбрать, поэтому почему этот сценарий не выбирает правильную запись в списке?
Обновление: У меня есть другие данные о форме, которая зависит от выбранного значения в раскрывающемся списке. При переходе на страницу по ссылке остальная страница ведет себя так, как если бы был выбран соответствующий элемент, но выпадающее меню по умолчанию - вверху. Другими словами, если мое раскрывающееся меню имеет значения «A», «B» и «C», и я выбираю «C», а затем нажмите ссылку, которая перезагружает страницу, в раскрывающемся списке отображается «A», но остальная часть на странице есть данные для «C».
Вы проверили, чтобы несколько элементов не были выбраны как выбрано? (как в вашем представлении ViewData ["lob"], так и в фактическом источнике html) –
Возможно, я что-то пропустил, но как данные могут упасть в ваших фрагментах кода. «Nothing» в «... DropDownList (« lob », Nothing ...», если это не DropDownList («lob», lob ... », где lob является общедоступным или защищенным свойством в коде. –
@James Avery - Когда он работает правильно, соответствующий элемент выбрал = «выбрано» в разметке. Когда я перемещаюсь по ссылке, ни один из элементов не выбран в разметке, поэтому он по умолчанию находится в верхней части списка – gfrizzle