Можно ли вставить визуализированные элементы управления ASP.NET с помощью JavaScript? - PullRequest
1 голос
/ 25 апреля 2011

Я не очень знаком с ASP.NET, поэтому простите, если я плохо сформулирую этот вопрос. Мы создаем много страниц ASPX, которые содержат динамические «метки», которые отображаются в виде обычного текста при просмотре в браузере Например, если источник моего .aspx содержит этот код:

<p>Thanks for trying <em>{ProductName}</em>!</p>

Страница при просмотре в браузере будет выглядеть так:

Спасибо за попытку Продукт моей компании !

Теперь я хочу, чтобы можно было динамически вставлять этот текст на страницу с помощью JavaScript. Проблема в том, что если у меня есть скрипт, пишущий тот же самый бит кода на страницу, я получаю это:

Спасибо за попытку {ProductName} !

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

Есть ли вообще способ, которым я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

Я не знаком с этим синтаксисом.Я бы ожидал что-то вроде <%= ProductName %> вместо этого.Какой вкус ASP.Net вы используете?WebForms?MVC?Spark?

Поскольку фигурные скобки являются неотъемлемой частью языка JavaScript, вполне вероятно, что теги JavaScript не анализируются для замены строк.Требуется довольно мощный механизм синтаксического анализа, чтобы узнать, когда фигурные скобки указывают на замену строки и когда они являются частью кода JavaScript.Если вы можете переключиться на синтаксис <%= ProductName %> для своего JavaScript, это может быть самым простым.Если это не вариант или не подходит для вашей ситуации, попробуйте поместить строки в html и извлечь их из JavaScript.Скрытый ввод кажется идеальным:

<input type="hidden" id="ProductName" value="{ProductName}" />

Вы можете обнаружить, что он не работает в атрибутах.Хорошо, просто используйте скрытый диапазон:

<span class="hidden" id="ProductName">{ProductName}</span>

(не забудьте определить «скрытый» класс css для фактического сокрытия: .hidden { display: none; })

Доберитесь до своих строкс JavaScript:

var productName = document.getElementById("ProductName").value;      // hidden input
var productName = document.getElementById("ProductName").innerHTML;  // hidden span
0 голосов
/ 25 апреля 2011

Сценарии .aspx отображаются на стороне сервера, поэтому они отображаются на вашем веб-сервере, а затем загружаются пользователем, поэтому пользователь уже получает страницу с этими значениями. С другой стороны, javascript отображается на клиентском компьютере, поэтому он загружает сценарий, а браузер отображает страницу, поэтому вы не можете увидеть это значение.

Для этого есть несколько способов.

Во-первых, и лучше всего попробовать ajax. Это означает, что javascript выполнит другой запрос к серверу, чтобы получить это значение и показать его пользователю, и это значение будет получено с сервера.

Во-вторых, вы можете попытаться поместить эти переменные сервера в переменные скрипта или скрытые элементы HTML. Таким образом, когда вы хотите использовать эти значения, вы можете получить их из локального сценария (javascript). Это было бы что-то вроде записи значения на скрытый или скрытый ввод "> и восстановления его как document.getElementById("value_id").innerHTML или даже установите переменные javascript на вашей странице, сделав что-то вроде

var val = "<% = ProductName%>";

...