从 asp.net 自定义 Web 控件中检索输入值
Retrieve input value from asp.net custom web control
我正在构建一个 Web 控件来隐藏 SSN 号码等输入值。
我写了控件,但是,我可以在 post 上取回输入值。
[DefaultProperty("Text")]
[ToolboxData("<{0}:Mask runat=server></{0}:Mask>")]
public class Mask : WebControl, INamingContainer {
const string INPUT_PREFIX = "_input";
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
public string Text {
get {
return text;
}
set {
text = value;
}
}
protected override void RenderContents(HtmlTextWriter output) {
output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
output.RenderBeginTag(HtmlTextWriterTag.Div);
output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID + INPUT_PREFIX);
output.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
output.RenderEndTag();
}
protected override void Render(HtmlTextWriter writer) {
this.RenderContents(writer);
}
}
我想我一切都正确。我试过实现 ipostbackdatahandler 也没有用。
有人可以帮我解决这个问题吗?
谢谢
尝试改变
public string Text
{
get
{
return text;
}
set
{
text = value;
}
}
至:
public string Text
{
get
{
string text = (string)ViewState["Text"];
return text ?? string.Empty;
}
set
{
ViewState["Text"] = value;
}
}
我能够检索到以下值:
public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection) {
text = postCollection[postDataKey + INPUT_PREFIX];
return false;
}
并将控件注册为 Requires Postback
protected override void OnInit(EventArgs e) {
Page.RegisterRequiresPostBack(this);
}
我正在构建一个 Web 控件来隐藏 SSN 号码等输入值。
我写了控件,但是,我可以在 post 上取回输入值。
[DefaultProperty("Text")]
[ToolboxData("<{0}:Mask runat=server></{0}:Mask>")]
public class Mask : WebControl, INamingContainer {
const string INPUT_PREFIX = "_input";
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
public string Text {
get {
return text;
}
set {
text = value;
}
}
protected override void RenderContents(HtmlTextWriter output) {
output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
output.RenderBeginTag(HtmlTextWriterTag.Div);
output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID + INPUT_PREFIX);
output.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
output.RenderEndTag();
}
protected override void Render(HtmlTextWriter writer) {
this.RenderContents(writer);
}
}
我想我一切都正确。我试过实现 ipostbackdatahandler 也没有用。
有人可以帮我解决这个问题吗?
谢谢
尝试改变
public string Text
{
get
{
return text;
}
set
{
text = value;
}
}
至:
public string Text
{
get
{
string text = (string)ViewState["Text"];
return text ?? string.Empty;
}
set
{
ViewState["Text"] = value;
}
}
我能够检索到以下值:
public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection) {
text = postCollection[postDataKey + INPUT_PREFIX];
return false;
}
并将控件注册为 Requires Postback
protected override void OnInit(EventArgs e) {
Page.RegisterRequiresPostBack(this);
}