0

私はカスタムasp.netサーバーコントロールを初めて使用しますが、かなり簡単な作業であると思う例を見つけることができないようです。次のように、プレースホルダーと呼ばれる新しいカスタムプロパティを渡すことができるカスタムテキストボックスサーバーコントロールを作成しようとしています。

<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

OK、整理しました。属性を追加してレンダリングするだけでよいことに気づきませんでした。

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

以前は、プレースホルダー属性はHTMLでレンダリングされませんでした。現在動作しています。

于 2012-04-16T16:29:26.577 に答える
0

あなたのアプローチはうまく見え、うまくいくはずです。アプローチを実装する前に、または問題に直面する前に、アプローチを確認しているだけなのか教えていただけますか?

于 2012-04-15T15:42:43.147 に答える