2013-12-19 9 views
21

にHTML5のプレースホルダーテキストを追加します。私は、標準入力持っているテキストボックスの.NET

<asp:TextBox type="text" runat="server" id="txtSearchTerm" /> 

を私は、これは、動的HTML5のプレースホルダでレンダリングしたいのですが。ような何か:

<input type="text" runat="server" id="txtSearchTerm" 
placeholder="Search Site #1" /> 

Site.Name = "サイト#1":

'Code Behind 
txtSearchTerm.**placeholder** = "Search " + Site.Name 

それは、次のHTMLを出力するように。

txtSearchTerm。 プレースホルダーは不動産ではありません。私はそれをテキストに設定して、javascriptを実行してフォーカスを表示/非表示にしますが、HTML5のプレースホルダ値を使用するだけです。これをどのように表現できますか?

JS /クライアント側の解決策はありません。

+0

はhttp://stackoverflow.com/questions/15823983/howも参照してください。 -do-i-put-hint-in-a-asptextbox – goodeye

答えて

36

Attributesコレクションを使用できます。だから、

txtSearchTerm.Attributes.Add("placeholder", "Search" + Site.Name); 

または

txtSearchTerm.Attributes["placeholder"] = "Search" + Site.Name; // or Attributes("placeholder") if you're using vb.net 

のようなものを持っているでしょうそして、あなたはローカリゼーション/翻訳のためのリソースを使用している場合:

txtSearchTerm.Attributes["placeholder"] = GetLocalResourceObject("YourLocalResourceName").ToString(); 
+0

ああ、あなたに大きな抱擁!それが私の必要なものです。 (マイナス;最後に)。ありがとうございました! – tiffylou

0

MicrosoftのAjaxの中に含まTextBoxWatermarkエクステンダーもありますコントロールツールキット。これはHTML5ではありませんが、後方互換性があります(私は信じています)。私はそれが退屈/迷惑背後にあるコードから、すべてのプレースホルダを追加するために見つけるので http://www.asp.net/AjaxLibrary/AjaxControlToolkitSampleSite/TextBoxWatermark/TextBoxWatermark.aspx

<ajaxToolkit:TextBoxWatermarkExtender ID="TBWE2" runat="server" 
    TargetControlID="TextBox1" 
    WatermarkText="Type First Name Here" 
    WatermarkCssClass="watermarked" /> 
+1

こちらをご覧ください。 OPはここではJavascriptソリューションを求めていないし、ajaxツールキットはJavascriptに大きく依存している。それを見ると、Javascriptで下位互換性がありますが、ブラウザがHTML5プレースホルダをサポートしていれば、HTML5プレースホルダも実装されていません。 –

18

。 WebControls TextBoxを継承する新しいTextBoxクラスを作成し、CodeBehindまたはHTMLサイドからプレースホルダを追加できます。 (プロジェクト/コントロールに置き/)

TextBox.csのWeb.Configで

namespace Project.Controls 
{ 
    public class TextBox : System.Web.UI.WebControls.TextBox 
    { 
     public string PlaceHolder { get; set; } 

     protected override void OnLoad(EventArgs e) 
     { 
      if(!string.IsNullOrWhiteSpace(PlaceHolder)) 
       this.Attributes.Add("placeholder", PlaceHolder); 

      base.OnLoad(e); 
     } 
    } 
} 

登録コントロール:

<system.web> 
    <pages> 
     <controls> 
     <add tagPrefix="ext" assembly="Project" namespace="Project.Controls" /> 
     </controls> 
    </pages> 
    </system.web> 

(あなたが好きなタグの接頭辞を使用)

使用法:

<ext:TextBox runat="server" id="SomeId" PlaceHolder="This is a PlaceHolder" /> 

または

SomeId.PlaceHolder="This is a PlaceHolder"; 
+0

ASPXファイルから、PlaceHolderの割り当てを動的にすることはできますか?動的プレースホルダが問題の目標です。 –

+0

もちろん、動的に割り当てることができます。他のコントロールプロパティと同様に使用できます。あなたは特定のユースケースを持っていますか?たぶん私はあなたがそれを解決するのを手助けするかもしれない – Tony

9

背後にあるコードから、私はちょうどHTMLコードにプレースホルダプロパティを入れて動作します:

<asp:TextBox placeholder="hola mundo" ID="some_id" runat="server"/> 
+0

これは動作しますが、Visual Studio(2015は私のために)は、「_Attribute 'プレースホルダ」がその要素の' TextBox'_」メッセージの有効な属性ではないことを**エラーリスト**に表示することがあります。 – Theophilus

関連する問題