我刚接触自定义asp.net服务器控件,似乎找不到任何示例来说明我认为应该是一项相当简单的任务。我正在尝试编写一个自定义的textbox服务器控件,它允许我传入一个名为placeholder的新的自定义属性,如下所示:
<bs:BootstrapTextbox ID="BootstrapTextboxTest" CssClass="span2" placeholder="This is a Test" runat="server"></bs:BootstrapTextbox>并渲染以下内容:
<input name="BootstrapTextboxTest" type="text" id="BootstrapTextboxTest" class="span2" placeholder="This is a Test">占位符标记在推特的Bootstrap JQuery框架中用于呈现控件中的文本。我想通过我的代码后台访问它以进行本地化。
下面是我目前的自定义服务器控件:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BootstrapControls
{
public class BootstrapTextbox : TextBox
{
[Bindable(false)]
[Category("Properties")]
[DefaultValue("")]
[Localizable(true)]
public string Placeholder
{
get
{
String placeholder = (String)ViewState["placeholder"];
return ((placeholder == null) ? String.Empty : placeholder);
}
set
{
ViewState["placeholder"] = value;
}
}
protected override void RenderContents(HtmlTextWriter writer)
{
writer.Write(Placeholder);
}
}
}再来一次。我对此还是个新手,所以任何方向/示例都会非常感谢。提前感谢您的帮助。
发布于 2012-04-15 23:42:43
您的方法看起来很好,应该可以工作。您能否告诉我们,您是否只是在实施之前确认您的方法,或者面临任何问题?
发布于 2012-04-17 00:29:27
好了,我已经解决了。我没有意识到我只需要添加我的属性并渲染它:
protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
{
writer.AddAttribute("placeholder", Placeholder);
base.AddAttributesToRender(writer);
} 以前,占位符属性不会在HTML中呈现。现在起作用了。
https://stackoverflow.com/questions/10162902
复制相似问题