После обширных исследований, прочитанных о Script Manager и методах проб и ошибок, вот что я нашел.
Вы можете отключить проверку событий, но это не всегда лучший вариант, потому что рекомендуется проверять как JavaScript, так и ASP.NET. В этом и заключается цель регистрации этих значений в ваших выпадающих списках. Если у вас есть JavaScript, который вставляет параметры в ваш выбор (выбор визуализируется из элемента управления DropDownList ASP.NET), вы должны по возможности предотвратить внедрение скрипта.
ОТВЕТ НА МОЙ ВОПРОС: Для этого мы вызываем это RegisterForEventValidation для КАЖДОГО возможного значения, которое может когда-либо появиться в этом раскрывающемся списке для любой возможной ситуации в вашем приложении. В моем случае у меня было два раскрывающихся списка , Один раскрывающийся список использовался для создания обратной передачи и повторно заполнял второй раскрывающийся список значениями, основанными на первом раскрывающемся списке. Тем не менее, теперь я использую JavaScript для добавления значений в выпадающий список с помощью jQuery.
Перед повторным заполнением значений я удаляю все значения с помощью jQuery.
jQuery("#<%=DDLTest.ClientID %>").children("option").each(function() {
jQuery(this).remove();
});
Когда мой первый выпадающий список изменяется, я заполняю второй выпадающий список значениями, соответствующими первому раскрывающемуся значению.
var map = {
"1112": "Hair 5 Drug Panel",
"1121": "Hair 5 Drug Panel and Extended Opiates Limit of Detection Test",
"1120": "Hair 5 Drug Panel Limit of Detection Test"
};
var thisTemp = this; // the reason I do this is because "this" is already being used in the callback.
jQuery.each(map, function(key, val) {
jQuery(thisTemp.Elements.DDLTest).append(jQuery("<option></option>").val(key).text(val));
});
И выберите нужное мне значение.
jQuery(this.Elements.DDLTest).val(quickDataEntryObject.TestPricingOptionId);
Однако, прежде чем все это JavaScript произойдет, я регистрирую возможные значения для раскрывающегося списка. Вы ДОЛЖНЫ сделать это в событии Render.
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim testPricingOptionTable As DataTable = ApplicationContext.Database.ExecuteDataSet("procEventValidationRegisteredValues", "test_pricing_options").Tables(0)
For Each testPricingOptionRow As DataRow In testPricingOptionTable.Rows
Page.ClientScript.RegisterForEventValidation(DDLTest.UniqueID, testPricingOptionRow(0).ToString)
Next
MyBase.Render(writer)
End Sub