0

我是自定义 asp.net 服务器控件的新手,似乎找不到任何我认为应该是相当容易的任务的示例。我正在尝试编写一个自定义文本框服务器控件,它允许我传入一个名为 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">

占位符标记在 Twitter 的 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);
    }
  }
}

再次。我是新手,所以任何方向/示例将不胜感激。提前感谢您的任何帮助。

4

2 回答 2

0

您的方法看起来不错,应该可行。您能否告诉我们您是否只是在实施之前确认您的方法或面临任何问题?

于 2012-04-15T15:42:43.147 回答
0

好的,整理好了。我没有意识到我只需要添加我的属性并渲染它:

    protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
    {
        writer.AddAttribute("placeholder", Placeholder);
        base.AddAttributesToRender(writer);
    } 

以前,占位符属性不会在 HTML 中呈现。现在工作。

于 2012-04-16T16:29:26.577 回答