Разрешить отправку «<<» без отключения «validaterequest» - PullRequest
0 голосов
/ 28 февраля 2011

Мне интересно, знает ли кто-нибудь способ разрешить отправку чего-то вроде "<<" без установки validaterequest = false </p>

У меня есть синтаксический анализатор креола, и рекомендуемый синтаксис плагина / макроса:

<<macro-name argo0=foo arg1=bar argN=qux>>

Ответы [ 3 ]

2 голосов
/ 28 февраля 2011

Я написал небольшую функцию JavaScript «encodeMyHtml», которая вызывается при событии OnClick при нажатии кнопки отправки HTML-формы.Функция кодирует введенный пользователем HTML-код для поля, которое я указал, в безвредную строку перед передачей на сервер.Когда я получаю эти данные на сервере, я просто декодирую и продолжаю свой путь.

ValidateRequest счастлив, наши пользователи счастливы, наши коллеги счастливы, черт возьми, мы счастливы.

Iдобавьте мою функцию JavaScript «encodeMyHtml» в методе OnPageLoad моего пользовательского элемента управления.Таким образом, я могу убедиться, что мой JavaScript добавляется на родительскую страницу только один раз, независимо от того, сколько элементов управления на странице.

В OnPageLoad моего элемента управления я называю это:

private void addEditorJavaScript()
{
    // create our HTML encoder javascript function
    // this way it shows up once per page that the control is on
    string scr = @"<script type='text/javascript'>function encodeMyHtml(name){
                var content = document.getElementById(name).value
                content = content.replace(/</g,'<');
                content = content.replace(/>/g,'>');
                document.getElementById(name).value = content;
            }</script>";

    // add the javascript into the Page
    ClientScriptManager cm = Page.ClientScript;
    cm.RegisterClientScriptBlock(this.GetType(), "GlobalJavascript", scr);
}

В ASPX моего элемента управления я использую gridview.Я обертываю asp: LinkButton обновления gridview в тег span, и в этот тег span я помещаю свой OnClickEvent.

<span onclick="encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')">
    <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="[Publish]" />
</span><span onclick="encodeMyHtml(' 

Когда я получаю данные на стороне сервера, я просто вызываю пару методов Replace длявходная строка для декодирования HTML, и я готов.

1 голос
/ 28 февраля 2011

Вы можете заменить регулярное выражение javascript на "<\ S" в специальном поле для отправки формы. Но это не получится для браузеров, которые не поддерживают JavaScript. </p>

0 голосов
/ 28 февраля 2011

Вы можете закодировать «<<» на клиенте, используя Javascript: </p>

<script language="javascript">
function encodeString(str) {
   return str.replace(/</gi, '&lt;').replace(/>/gi, '&gt;');
}
</script>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...