У меня есть веб-приложение, использующее страницы aspx. Во-первых, я хотел использовать Server.HtmlEncode(value)
при отображении значения в LabelledTextBox
public interface ILabelledControl
{
bool ReadOnly { get; set; }
}
[DefaultProperty("Text")]
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
public class LabelledTextBox : TextBox, ILabelledControl
{
//public Unit EditableWidth { get; set; }
public Unit ReadOnlyWidth { get; set; }
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (this.ReadOnly)
{
System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label();
foreach (string att in this.Attributes.Keys)
lbl.Attributes.Add(att, this.Attributes[att]);
lbl.Text = this.Text;
lbl.ForeColor = ForeColor;
//lbl.Width = this.Width;
if (ReadOnlyWidth != null)
lbl.Width = ReadOnlyWidth;
lbl.CssClass = CssClass;
lbl.ID = this.ID;
lbl.RenderControl(writer);
}
else
{
base.Render(writer);
}
}
}
Значение <script>alert("hello")</script>
было отображено, но сценарий был выполнен.
После этого я хотел попробовать другое решение, которое должно было обработать исключение.
A potentially dangerous Request.Form value was detected from the client
чтобы оставаться на той же странице, содержащей форму и отображать сообщение об ошибке вверху с общим сообщением типа «Пожалуйста, убедитесь, что весь ввод не содержит таких символов, как '‹' или '>' »
Решение 1. Что я делаю не так?
Решение 2. Как мне обработать это исключение и остаться на той же странице с заполненной формой
Общие. Какое решение лучше?
Спасибо !