Кодировка символов в кавычках ASP.NET вызывает проблемы при установке свойства элемента управления - PullRequest
2 голосов
/ 10 декабря 2010

У меня есть веб-приложение ASP.NET, и в определенный момент я делаю это:

mycontrol.stringparameterforjscript = "document.getElementById('" + myotherparam + "').value = 'Hello'";

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

<textarea onfocus="document.getElementById(&#39;myvalue&#39;).value = &#39;Hello&#39;"></textarea>

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

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

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Я думаю, вам может понадобиться @ на обоих строковых литералах в вашем назначении, и уберите косую черту:

mycontrol.stringparameterforjscript = @"document.getElementById('" + myotherparam + @"').value = 'Hello'";

РЕДАКТИРОВАТЬ

Как я это сделал:

На .aspx:

<asp:Textbox ID="tbTest" runat="server" TextMode="MultiLine" />

В коде:

protected void Page_Load(object sender, EventArgs e)
{
    string myotherparam = "paramval";
    tbTest.Attributes.Add("onfocus", @"document.getElementById('" + myotherparam + @"').value = 'Hello'");
}

Результирующий вывод:

<textarea name="tbTest" rows="2" cols="20" id="tbTest" onfocus="document.getElementById('paramval').value = 'Hello'"></textarea>
0 голосов
/ 11 декабря 2010

ОК, наконец-то мне это удалось. HTML Закодированные строки, распознаваемые движком javascript, как это возможно? Как вы увидите, в происходящем не о чем беспокоиться.

...