2012-04-15 7 views
0

私はカスタムasp.netサーバーコントロールを初めて使用しています。簡単な作業。ASP.NetのカスタムServerControlからHTML入力で新しいプロパティをレンダリングする方法

<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); 
    } 
    } 
} 

はここで、現時点での私のカスタムサーバーコントロールです。私はこれを初めて知ったので、どの方向性/例も高く評価されるだろう。ご協力いただきましてありがとうございます。

答えて

0

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

+0

私はそれを整理しました(私の答えを見てください)。しかしあなたは正しいです。私は私の問題をより明確に述べたはずです。最初に投稿されたコードは、入力タグ内の属性をレンダリングしませんでした。私の変更後、期待どおりに動作します。ありがとう。 –

0

OK、これを並べ替えました。私は単に私の属性を追加し、それをレンダリングするために必要な実現していない:

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

以前placeholder属性は、HTMLでレンダリングされないでしょう。今すぐ動作します。

関連する問題