Я написал небольшую функцию 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, и я готов.