#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(). Просто убедитесь, что ваши скрытые элементы управления имеют уникальные идентификаторы на случай, если вам понадобится несколько пользовательских элементов управления на одной странице