標準入力があります:
<asp:TextBox type="text" runat="server" id="txtSearchTerm" />
ダイナミックHTML5プレースホルダーでこのレンダリングを行いたいです。何かのようなもの:
'Code Behind
txtSearchTerm.**placeholder** = "Search " + Site.Name
そのため、次のHTMLが出力されます。
<input type="text" runat="server" id="txtSearchTerm"
placeholder="Search Site #1" />
ここで、Site.Name = "Site#1"。
txtSearchTerm .プレースホルダーはプロパティではありません。テキストに設定し、javascriptを実行してフォーカスの表示/非表示を切り替えますが、HTML5プレースホルダー値を使用したいだけです。これをどのようにレンダリングできますか?
JS /クライアント側のソリューションはありません。
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();
コードビハインドからすべてのプレースホルダーを追加するのは面倒/面倒だからです。 WebControls TextBoxを継承する新しいTextBoxクラスを作成してから、CodeBehindまたはHTML Sideからプレースホルダーを追加できます。
TextBox.cs(Project/Controls /に配置)
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);
}
}
}
Web.Configにコントロールを登録:
<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";
プレースホルダープロパティをHTMLコードに入れて動作します。
<asp:TextBox placeholder="hola mundo" ID="some_id" runat="server"/>
また、MicrosoftのAjax Controlツールキットに含まれている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" />