我正在使用Visual Studio 2008.(我有Visual Studio 2013,但我发现它太难用了)....所以我没有任何新的HTML5
控件环境。
我想创建一个自定义服务器控件来生成此输出:
<input type="email">
我创建了这个类:
public class TextBoxEmail : System.Web.UI.HtmlControls.HtmlInputText
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("type", "email");
base.Attributes.Remove("type");
base.RenderAttributes(writer);
}
}
但问题是这产生了这个输出:
<input type="email" type="text">
我的问题是:
如何摆脱额外的type="text
?
实际上,我更愿意继承System.Web.UI.WebControls.TextBox
的{{1}} INSTEAD,但我不知道如何做到这一点。
我有整个网站的viewstate禁用,所以我根本不使用它...我从不使用它。
我知道我可能继承自System.Web.UI.HtmlControls.HtmlInputText
,它在其构造函数中将“type”作为参数,但我无法弄清楚如何去做。此外,我需要System.Web.UI.HtmlControls.HtmlInputControl
内的所有功能,预先填充PostBack上的文本框....我试图找出所有这些,但不能这样做。如果可以的话,我会从头开始构建这个控件。
关于创建服务器控件的信息并不多。就好像这个服务器控制制造的东西从来没有真正起飞那么多。
请指教。 感谢
答案 0 :(得分:0)
对于这个特定用例,我不建议您创建一个服务器控件,您可以使用普通TextBox
并修改type属性。
<asp:TextBox runat="server" ID="txtMail"/>
背后的代码
protected void Page_Load(object sender, EventArgs e)
{
txtMail.Attributes["type"] = "email";
}