Возможно ли вставить визуализированные ASP.NET элементы управления с помощью JavaScript?

#javascript #asp.net #dynamic #insert #label

#javascript #asp.net #динамический #вставить #метка

Вопрос:

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


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

Страница при просмотре в браузере будет читать:

Спасибо, что попробовали продукт моей компании!

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

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

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

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

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

1. ajax может быть вариантом?

2. Откуда вы получаете фактическое название продукта? Почему это не должно быть доступно при рендеринге страницы?

Ответ №1:

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

Для этого есть несколько обходных путей.

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

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

var val = «<%=ProductName%>»;

Ответ №2:

Я не знаком с этим синтаксисом. Вместо этого я ожидал бы чего-то вроде <%= ProductName %> . Какой вкус у ASP.Сеть, которую вы используете? Веб-формы? MVC? Искра?

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

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

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

 <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
  

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

1. Оба хороших предложения, но, к сожалению, я не думаю, что какое-либо из них сработает в моем конкретном случае. У нас есть тонны этих меток, используемых на множестве сайтов. Я не могу просто внезапно изменить синтаксис, и аналогично, непрактично вставлять скрытый элемент для каждого на странице. Спасибо, хотя — я еще немного подумаю.