Реализовать пользовательский ASP.NET ListControl, который отправляет обратные данные с помощью javascript

#javascript #asp.net #custom-controls

#javascript #asp.net #пользовательские элементы управления

Вопрос:

Я пишу пользовательский серверный элемент управления, унаследованный от ListControl. Я могу изменить рендеринг элемента управления (переопределяя метод рендеринга), используя «li» с пользовательским CSS вместо использования обычного тега «option», но как я могу отправить выбранные данные обратно в элемент управления? Я реализовал выбор с помощью javascript. Я полагаю, что я должен использовать javascript для отправки элементу управления выбранного значения, но я не знаю как. Если кто-нибудь сможет подсказать мне правильный путь, я буду признателен.

Заранее спасибо

Ответ №1:

используйте некоторый jquery ajax

 $.ajax({  
         type: "GET",  
         url: "process_me.aspx?value="   $("#id-of-hidden-value-of-list").val(),  
         success: function(){  
            //success (not finished)
            alert("woot!")
            }  
         });  
  

я имею в виду, что это быстро и грязно. И используйте Request .Коллекция строк запроса для получения значения в коде.

Вместо этого вы могли бы реализовать скрытый элемент управления в методе render. ASP.NET фанат boi хотел бы, чтобы вы внедрили IPostBackEventHandler.

Вы могли бы упростить его, сделать обычный html скрытым и использовать запрос.Сбор формы при обратной передаче.

 Response.Write("<input type='hidden' name='list-value'>");
..

document.forms[0].list-value.value = selectedValue;
document.forms[0].submit();

.. 

if(Request.Form["list-value"]) != "" { // do something }
  

И альтернативой ajax является некоторый jquery / javascript, который либо записывает выбранное значение в скрытую строку запроса, либо в строку запроса формы перед ее отправкой (что и делает этот код ajax).

Комментарии:

1. Привет, BobTodd. Я не могу использовать это решение, потому что я хочу написать пользовательский серверный элемент управления, а метод jquery «ajax» может использоваться только на странице, а не из пользовательского элемента управления.

2. вы можете использовать jquery из пользовательского элемента управления с помощью Page. ClientScript. Зарегистрируйте clientscriptblock() в вашем методе Render(). Просто убедитесь, что ваши скрытые элементы управления имеют уникальные идентификаторы на случай, если вам понадобится несколько пользовательских элементов управления на одной странице