У меня есть DropDownList и TextBox на странице. Когда пользователь выбирает «другой» вариант в DropDownList, я хочу отобразить текстовое поле справа от него. Я не хочу использовать традиционную технику PostBack. Я хочу, чтобы это взаимодействие было на стороне клиента.
Я знаю, что могу получить ссылку на элемент DOM и установить для него стиль «display: none» или «display:». Я ищу то, что встроено в платформу ASP.NET для обработки чего-то вроде этого. То есть в jQuery это так же просто, как $('controlID').hide. Есть ли Control Extender, который может это сделать? Является ли jQuery частью платформы ASP.NET?





jQuery будет / распространяется с VisualStudio / ASP.NET MVC, хотя я бы не стал называть это частью фреймворка. Я думаю, что вы можете свободно использовать его и верить, что он будет поддерживаться.
Обратите внимание, что Microsoft заявила, что они будут использовать основную линию разработки для jQuery, поэтому сам код не будет отличаться от того, который вы можете загрузить с jQuery.com, за исключением, возможно, встроенного Intellisense.
РЕДАКТИРОВАТЬ: Чтобы настроить свою функциональность, загрузите код с jquery.com. Поместите его в папку со скриптами или в другое место, где вы храните файлы javascript. Добавьте ссылку на скрипт на свою страницу. Используйте jquery, чтобы добавить обработчик onchange в раскрывающийся список, и когда значение раскрывающегося списка другое, отобразите текстовое поле, в противном случае скройте его. В приведенном ниже примере предполагается, что other не выбран по умолчанию. Если вы используете элементы управления runat = "server" с MasterPages или внутри UserControls, вам необходимо настроить имена в функциях javascript, чтобы учесть искажение имен, которое выполняет ASP.NET. Вероятно, проще дать им уникальные классы CSS и ссылаться на них, используя нотацию «.class», а не нотацию «#id».
<script type = "text/javascript" src = "...pathtoscript../jquery.1.2.6.js"></script>
<script type = "text/javascript">
$(document).ready( function() {
$("#DropDownListID").bind('change', function() {
if (this.options[this.selectedIndex].value == 'other')
{
$("#TextBoxID").show();
}
else
{
$("#TextBoxID").hide();
}
});
});
</script>
...
<select id = "DropDownList">
<option value='first'>First</option>
...
<option value='other'>Other</option>
</select>
<input type='text' id='TextBox' style='display: none;' />
Спасибо за исчерпывающий ответ. Я надеялся, что jQuery будет работать без необходимости вручную брать фреймворк и ссылаться на него. Возможно, это выйдет в будущем выпуске.
Вы также можете использовать клиентскую платформу asp.net (через диспетчер сценариев), чтобы получить ссылку на элемент. Но тогда вам все равно придется использовать обычные манипуляции с DOM.
$get('<%= myDropDown.ClientID %>').style.display = 'none';
Просто убедитесь, что у вас есть ссылка на диспетчер сценариев.
Для чего-то такого простого, я бы не подумал, что стоит ссылаться на jquery, но, возможно, у вас есть большие планы ;-)
Что нужно сделать, чтобы получить функциональность jQuery? На данный момент меня не волнует intellisense.