HTTPmodule - замена разметки - PullRequest
       4

HTTPmodule - замена разметки

0 голосов
/ 31 января 2011

Я создал HTTPModule, который вызывается для каждого запроса на мой сайт.Внутри модуля я создал свою собственную оболочку фильтра для HTTPApplication.Context.Response.Filter, которая позволяет мне манипулировать разметкой непосредственно перед ее отправкой обратно клиенту.

Идея в том, что я собираюсьнайдите определенные слова / фразы и замените их тем же словом / фразой на заданном языке, которые будут храниться в базе данных.

Одним из слов, которое я пытаюсь заменить, является «Пароль».Проблема в том, что в разметке есть элементы управления, называемые _ctl122_txtPassword, и когда я нахожусь в своем фильтре, я буквально просто выполняю операции со строками (поиск / замена / и т. Д.), Поэтому имя элемента управления переименовывается в _ctl122_txtTranslation, что нарушает все виды вещей.1005 *

Поэтому я не хочу заменять совпадения в этом: <input type="password" style="width: 200px;" class="formfield" id="_ctl22_txtPassword" name="_ctl22:txtPassword">

, но я хочу заменить совпадения в этом: <td align="right" class="formlabel">Password:</td>

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

Единственная другая альтернатива, которую я попробовал, - это замена строки '> Password'.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 31 января 2011

Из-за характера HTML довольно сложно написать регулярное выражение, которое будет обрабатывать все случаи.

Вы можете использовать это как отправную точку

http://snook.ca/archives/active_server_pages/vbscript_code_t

Лучшим решением может быть использование инструмента парсинга HTML (Html ​​Agility Pack)

http://social.msdn.microsoft.com/Forums/en/regexp/thread/3b0a595b-cd09-446f-bbcb-d826511c364e

Если бы я собирался это сделать (звучит как многоязычный сайт), я бы, вероятно, использовал ресурс файлы

Или, возможно, определили границы макросов, чтобы мое регулярное выражение могло легко что-то искать.

например, с @@ 's

<td align="right" class="formlabel">@@Password@@:</td>
...