Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JavaScript работа с ASP.NET компонентами 
:(
    Опции темы
gambit
Дата 31.3.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Я полный ноль JavaScript, поэтому возможно вопрос глупый.
Как их JavaScript кода взаимодействоват со свойствами ASP.NET компонентов? Например я хочу добавить текст в TextBox, можно конечно
при щелчке по кнопке
Код

TextBox1.text+="ля-ля";

но тогда происходит заново открытие страницы, что естественно является бредовым занятиям.
PM MAIL ICQ Skype   Вверх
Soah
Дата 31.3.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Код

<form runat="server" action="" id="form">
    <script type="text/javascript">
        function addText() {
            document.getElementById('TextBox1').value += "Privet";
        }
    </script>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input type="button" value="Add Text" onclick="addText()" />    
</form>

?
PM MAIL   Вверх
Любитель
Дата 31.3.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Грубо говоря верно, но вместо указания ид-шника всё-таки лучше указывать <%= foo.ClientID %>. Это правда лишает возможности выноса js-ов в отдельные файлы, но.. так уж устроен механизм ASP .Net WebForms.


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 31.3.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Цитата(Любитель @  31.3.2009,  18:20 Найти цитируемый пост)
Это правда лишает возможности выноса js-ов в отдельные файлы, но.. так уж устроен механизм ASP .Net WebForms. 

Можно TextBox1.ClientID сделать параметром addText...


--------------------
PM MAIL WWW   Вверх
Soah
Дата 31.3.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Цитата(Любитель @  31.3.2009,  18:20 Найти цитируемый пост)
Это правда лишает возможности выноса js-ов в отдельные файлы


Код

<script type="text/javascript">
    function addText(tbId) {
        document.getElementById(tbId).value += "Privet";
    }
</script>
<form runat="server" action="" id="form">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input type="button" value="click" onclick="addText('<%=foo.ClientID %>')" />    
</form>

PM MAIL   Вверх
Любитель
Дата 31.3.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Soah @  31.3.2009,  18:28 Найти цитируемый пост)
onclick="addText('<%=foo.ClientID %>')"

Это всё понятно и очевидно smile Речь о полном unobtrusive javаscript. С ASP .Net WebForms это невозможно.


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 31.3.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Любитель, smile вариант "поискать input в той же дивке/форме, что и event source - вполне возможен.


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 31.3.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(PashaPash @  31.3.2009,  20:02 Найти цитируемый пост)
Любитель, smile вариант "поискать input в той же дивке/форме, что и event source - вполне возможен. 

А подписываться на события как? smile А если инпутов несколько? Да и производительность (на нетривиальном js) очень пострадает (всё-таки выбор чисто по ил-шнику гораздо быстрей). Не, тот факт что ужасные ид-шники - это зло (для js и css в первую очередь) я думаю очевиден smile

Впрочем, мы уходим от темы smile


--------------------
PM MAIL ICQ Skype   Вверх
Soah
Дата 1.4.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Цитата(Любитель @  31.3.2009,  19:54 Найти цитируемый пост)
С ASP .Net WebForms это невозможно.

Любитель, если не сложно, можешь написать как красиво решается подобная проблема на других платформах,
может и для ASP .Net WebForms найдется решение.
PM MAIL   Вверх
Любитель
Дата 1.4.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Эээ.. В ASP .Net MVC решается нормально smile Ибо нормальные ид-шники. У элементов страницы прописываем ид-шники, инклюдим js-файл (в html никаких скриптов), там подписываемся на window.onload (в тривиальном случае - вообще есть более удачные варианты, хотя браузерозависимые), в обработчике получаем элемент по ид-шнику и аттачим для него обработчик (attachEvent/addEventListener). Вообщем-то очень стандартная техника unobtrusive javascript. С js-фреймворками решается гораздо проще, ибо рутинная работа уже реализована smile Решения в ASP .Net WebForms нету (при использовании серверных контролов). Да и в любом случае ASP .Net WebForms и так генерит в страницах немало скриптов, так что.. smile


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 1.4.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Цитата(Любитель @  31.3.2009,  21:57 Найти цитируемый пост)
А подписываться на события как? smile А если инпутов несколько? Да и производительность (на нетривиальном js) очень пострадает (всё-таки выбор чисто по ил-шнику гораздо быстрей). Не, тот факт что ужасные ид-шники - это зло (для js и css в первую очередь) я думаю очевиден smile

Вообще да, ID для CSS ужасны, но это решено в 4-м asp.net. 
А в чем проблема подписаться на события? Ты хочешь код подписывания тоже в отдельный js вынести? Тогда этот js-файл будет строго привызан к конкретной странице, что ни есть хорошо. Стандартный способ регистрации скриптов подразумевает вынос сложных обработчиков в файл и инлайн кода подписки в страницу, без ущерба производительности.


--------------------
PM MAIL WWW   Вверх
Soah
Дата 1.4.2009, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Цитата(Любитель @  1.4.2009,  20:04 Найти цитируемый пост)
В ASP .Net MVC решается нормально

К сожалению с ASP .Net MVC ещё не работал
Цитата(Любитель @  1.4.2009,  20:04 Найти цитируемый пост)
У элементов страницы прописываем ид-шники, инклюдим js-файл (в html никаких скриптов), там подписываемся на window.onload (в тривиальном случае - вообще есть более удачные варианты, хотя браузерозависимые), в обработчике получаем элемент по ид-шнику и аттачим для него обработчик (attachEvent/addEventListener). 

ну, такое можно сделать и в ASP .Net WebForms

Но меня больше интересует, как передать ид-шник в js-файл.
PM MAIL   Вверх
PashaPash
Дата 1.4.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Цитата(Soah @  1.4.2009,  20:16 Найти цитируемый пост)

Но меня больше интересует, как передать ид-шник в js-файл. 

А никак, Любитель, предлагает их хардкодить, и выносить в файл вообще весь js.

Добавлено через 2 минуты и 57 секунд
Любитель, вот этот кусок:
Цитата(Любитель @  1.4.2009,  20:04 Найти цитируемый пост)
там подписываемся на window.onload (в тривиальном случае - вообще есть более удачные варианты, хотя браузерозависимые), в обработчике получаем элемент по ид-шнику и аттачим для него обработчик (attachEvent/addEventListener).

Можно оставить на странице, привязав к ClientID. И даже не вписывать явно, а зарегестировать через ClientScriptManager.RegisterStartupScript. Обработчик оставить в скрипте. Получишь чистую разметку, без всяких там <button onlick=".ClientID..">


--------------------
PM MAIL WWW   Вверх
Soah
Дата 1.4.2009, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Цитата(PashaPash @  1.4.2009,  20:17 Найти цитируемый пост)
предлагает их хардкодить, и выносить в файл вообще весь js.

тогда я не понимаю в чём проблема, вроде всё реализуемо
PM MAIL   Вверх
Любитель
Дата 2.4.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(PashaPash @  1.4.2009,  20:17 Найти цитируемый пост)
А никак, Любитель, предлагает их хардкодить, и выносить в файл вообще весь js.

Да. Именно так. И это нормально. http://en.wikipedia.org/wiki/Unobtrusive_JavaScript
А так - давай и CSS делать гибким (читай - динамически генерируемым или заинлайненным). Зачем хардкодить? С js - тоже самое. Привязка к ид-шникам/классам это нормально.


--------------------
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.