重写textbox,为什么不能赋值
我要对输入的数据进行转义,所以我对 textbox转义,但是给textbox赋值时候总是赋不上去,为什么??public override string Text
{
get
{
return System.Web.HttpUtility.HtmlEncode(base.Text);
}
set
{
base.Text =System.Web.HttpUtility.HtmlDecode(value);
}
}
System.Web.HttpUtility.HtmlDecode(value) 是新的值
但是 base.Text仍然是原值。
这个要怎么解决?? --------------------编程问答-------------------- 因为set属性只有在直接赋值的时候才会被调用
比如:myTxtBox.Text="ABC";
所以比如你在界面上敲键盘的话是不会调用这个的。
因此get出来的是原来的值。
重写protected override void OnKeyPress(KeyPressEventArgs e)吧。
或者:protected override void OnTextChanged(EventArgs e)
比如这个,没输入一个字符后添加一个 "-"
--------------------编程问答-------------------- 帅哥。楼主很明显是Asp.net的,你这是WinForm的事件。。。。。。
class Class1 : TextBox
{
private string _text;
public override string Text
{
get
{
return this._text;
}
set
{
this._text = value;
}
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
//base.OnKeyPress(e);
this._text += e.KeyChar;
}
protected override void OnTextChanged(EventArgs e)
{
//base.OnTextChanged(e);
this._text += "-";
}
}
楼主,我想问你,你是不是自己建立了一个服务端控件,继承TextBox,然后重写Text属性,在aspx页面上,你是否是添加的自己写的服务端控件,而不是TextBox?如果是的话,你就调试一下吧,跟踪一下这个System.Web.HttpUtility.HtmlDecode(value),是否是你想要的
--------------------编程问答-------------------- 因为TextBox本身就是会做HTML编码的。
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.textbox.text.aspx
When the text box is rendered, the contents of this property are HTML-encoded. For example, if you set this property to "<b>Test</b>", the browser will display "<b>Test</b>", not "Test" in bold.
--------------------编程问答--------------------
同意! --------------------编程问答--------------------
但是原理一样。在页面上敲字同样不会调用setter属性。 --------------------编程问答-------------------- 哦。。sorry。我的错。 --------------------编程问答--------------------
跟你说的差不多,但是System.Web.HttpUtility.HtmlDecode(value),是我想要的值比如“<script>”,但是外面一层就会变成“<script>” --------------------编程问答--------------------
本来我也以为自己会转,但是我发现个问题,就是如果开始我的“<script>”不转成“<script>”的话,set转义成“<script>”后显示的是"<script>".但如果我吧"<script>"转换成“<script>”,set时候转义成"<script>",返回出来的值还是“<script>”???? --------------------编程问答-------------------- 没人知道了吗???
补充:.NET技术 , ASP.NET