XHTML Validation in HtmlTextBox
The HtmlTextBox requires you to provide valid XHTML and properly handle the content you set as its value.
To validate the defined content of the HtmlTextBox, use the IsValidXhtml
expressions function or the Telerik.Reporting.Processing.XhtmlValidator.IsValidXhtml
static method.
Specifically, the HtmlTextBox supports the following approaches for validating its XHTML content:
-
Using the
IsValidXhtml
method in an expression. -
Using an event and the
IsValidXhtml
method. -
Using and event and the
ValueError
exception.
Using the IsValidXhtml Method in Expression
The following example shows how to use the IsValidXhtml
method inside the HtmlTextBox Expression
:
const string validXhtml = "<b>valid xhtml</b>.";
const string systemXhtml = "Provided html is not acceptable.";
Telerik.Reporting.HtmlTextBox txt = new Telerik.Reporting.HtmlTextBox();
txt.Value = string.Format("=If(IsValidXhtml('{0}'), '{0}', '{1}')", validXhtml, systemXhtml);
Const validXhtml As String = "<b>valid xhtml</b>."
Const systemXhtml As String = "Provided html is not acceptable."
Dim txt As New Telerik.Reporting.HtmlTextBox()
txt.Value = String.Format("=If(IsValidXhtml('{0}'), '{0}', '{1}')", validXhtml, systemXhtml)
Using Events and the IsValidXhtml Method
The following example demonstrates how to apply the IsValidXhtml
method inside the HtmlTextBox ItemDataBinding
event handler:
const string validXhtml = "<b>valid xhtml</b>.";
const string systemXhtml = "Provided html is not acceptable.";
Telerik.Reporting.HtmlTextBox txt = new Telerik.Reporting.HtmlTextBox();
txt.ItemDataBinding += delegate(object sender, EventArgs args)
{
Telerik.Reporting.Processing.HtmlTextBox procTxt = (Telerik.Reporting.Processing.HtmlTextBox)sender;
if (Telerik.Reporting.Processing.XhtmlValidator.IsValidXhtml(validXhtml))
{
procTxt.Value = validXhtml;
}
else
{
procTxt.Value = systemXhtml;
}
};
Const validXhtml As String = "<b>valid xhtml</b>."
Const systemXhtml As String = "Provided html is not acceptable."
Public Sub TestValidateXhtmlWithEventAndIsValidXhtml()
Dim txt As New Telerik.Reporting.HtmlTextBox()
AddHandler txt.ItemDataBinding, AddressOf MyEventHandler
End Sub
Private Sub MyEventHandler(ByVal sender As Object, ByVal e As EventArgs)
Dim procTxt As Telerik.Reporting.Processing.HtmlTextBox = DirectCast(sender, Telerik.Reporting.Processing.HtmlTextBox)
If Telerik.Reporting.Processing.XhtmlValidator.IsValidXhtml(validXhtml) Then
procTxt.Value = validXhtml
Else
procTxt.Value = systemXhtml
End If
End Sub
Using Events and the ValueError Exception
The following try-catch-block approach shows how to handle the exception:
const string invalidXhtml = "<b>invalid xhtml.";
const string systemXhtml = "Provided html is not acceptable.";
Telerik.Reporting.HtmlTextBox txt = new Telerik.Reporting.HtmlTextBox();
txt.ItemDataBinding += delegate(object sender, EventArgs args)
{
Telerik.Reporting.Processing.HtmlTextBox procTxt = (Telerik.Reporting.Processing.HtmlTextBox)sender;
try
{
procTxt.Value = invalidXhtml;
// html that will not be accepted
}
catch (Exception)
{
procTxt.Value = systemXhtml;
}
};
Const invalidXhtml As String = "<b>invalid xhtml."
Const defaultXhtml As String = "Provided html is not acceptable."
Public Sub TestValidateXhtmlWithEventAndValueError()
Dim txt As New Telerik.Reporting.HtmlTextBox()
AddHandler txt.ItemDataBinding, AddressOf ValueErrorHandler
End Sub
Private Sub ValueErrorHandler(ByVal sender As Object, ByVal e As EventArgs)
Dim procTxt As Telerik.Reporting.Processing.HtmlTextBox = DirectCast(sender, Telerik.Reporting.Processing.HtmlTextBox)
Try
' html that will not be accepted
procTxt.Value = invalidXhtml
Catch generatedExceptionName As Exception
procTxt.Value = defaultXhtml
End Try
End Sub