2016-08-10 3 views
2

У меня есть этот код:Как правильно добавить скрипт в элемент управления?

Dim script = New HtmlGenericControl("script") 
script.Attributes.Add("type", "text/javascript") 
script.InnerText = "var alohaInterval = setInterval(function() {if (typeof Aloha === ""undefined"") {return;} clearInterval(alohaInterval); Aloha.ready(function() {Aloha.jQuery("".editable-content"").aloha();})}, 100);" 
htmlControl.Controls.Add(script) 

Это порождает следующую вещь:

<script type="text/javascript">var alohaInterval = setInterval(function() {if (typeof Aloha === &quot;undefined&quot;) {return;} clearInterval(alohaInterval); Aloha.ready(function() {Aloha.jQuery(&quot;.editable-content&quot;).aloha();})}, 100);</script> 

Проблема заключается в том, что это HTML-закодирован. Мой вопрос: как убедиться, что сценарий не будет закодирован в HTML?

+1

Использование RegisterClientScriptBlock. https://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerclientscriptblock(v=vs.110).aspx – Bert

+0

Я скоро испытаю это. Можете ли вы объяснить, почему результат кода, указанный в вопросе HTML-кодирования? –

+0

InnerText кодирует текст. InnerHtml должен позволить ему проходить через незашифрованный. – Bert

ответ

1

Есть несколько способов, по которым вы можете пойти об этом в зависимости от того, что вам нужно.

Для небольшого количества скриптов, которые вы всегда хотите получить для своего контроля, что вы чаще всего встраиваете в код в виде строки, вы захотите использовать RegisterClientScriptBlock или RegisterStartupScript. Какой из них вы выбираете, зависит в основном от того, где вы хотите, чтобы сценарий отображался. Вы можете найти хорошее объяснение того, когда выбрать тот или иной here.

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

Для этого конкретного случая:

ClientScript.RegisterClientScriptBlock(Me.GetType, "alohainit", "var alohaInterval = setInterval(function() {if (typeof Aloha === ""undefined"") {return;} clearInterval(alohaInterval); Aloha.ready(function() {Aloha.jQuery("".editable-content"").aloha();})}, 100);", True) 

 Смежные вопросы

  • Нет связанных вопросов^_^