2011-01-31 3 views
0

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

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

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

Так что я не хочу, чтобы заменить матчи в этом: <input type="password" style="width: 200px;" class="formfield" id="_ctl22_txtPassword" name="_ctl22:txtPassword">

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

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

Единственная альтернатива, которую я пробовал, фактически заменяет строку «Пароль».

Заранее благодарим за помощь.

ответ

0

Из-за природы 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">@@[email protected]@:</td> 
+0

Спасибо, djeeg .... Я обычно использую файл ресурсов также, но есть причины, которые мы не можем. Мне нравится идея маркера, и я думаю, что я собираюсь использовать ее с очень примитивным шаблоном. – bullroa