将HTML5占位符文本添加到文本框.net

tif*_*lou 25 .net vb.net asp.net html5

我有一个标准输入:

<asp:TextBox type="text" runat="server" id="txtSearchTerm" />
Run Code Online (Sandbox Code Playgroud)

我想用动态HTML5占位符进行渲染.就像是:

'Code Behind
txtSearchTerm.**placeholder** = "Search " + Site.Name
Run Code Online (Sandbox Code Playgroud)

这样它输出以下HTML:

<input type="text" runat="server" id="txtSearchTerm" 
placeholder="Search Site #1" />
Run Code Online (Sandbox Code Playgroud)

其中Site.Name ="Site#1".

txtSearchTerm.占位符不是属性.我把它设置为文本然后运行javascript来显示/隐藏焦点但我宁愿只使用HTML5占位符值.我怎么渲染这个?

请不要JS /客户端解决方案.

Ste*_*n V 42

你可以使用这个Attributes集合.所以你会有类似的东西

txtSearchTerm.Attributes.Add("placeholder", "Search" + Site.Name);
Run Code Online (Sandbox Code Playgroud)

要么

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

如果您使用资源进行本地化/翻译:

txtSearchTerm.Attributes["placeholder"] = GetLocalResourceObject("YourLocalResourceName").ToString();
Run Code Online (Sandbox Code Playgroud)


Ton*_*ony 19

因为我发现从后面的代码添加所有占位符是令人讨厌/烦人的.您可以创建一个继承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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在Web.Config中注册控件:

  <system.web>
    <pages>
      <controls>
        <add tagPrefix="ext" assembly="Project" namespace="Project.Controls" />
      </controls>
    </pages>
  </system.web>
Run Code Online (Sandbox Code Playgroud)

(使用你想要的任何标签前缀)

用法:

<ext:TextBox runat="server" id="SomeId" PlaceHolder="This is a PlaceHolder" />
Run Code Online (Sandbox Code Playgroud)

或者从后面的代码

SomeId.PlaceHolder="This is a PlaceHolder";
Run Code Online (Sandbox Code Playgroud)


Ron*_*uay 9

我只是将占位符属性放在HTML代码中并且有效:

<asp:TextBox placeholder="hola mundo" ID="some_id" runat="server"/>
Run Code Online (Sandbox Code Playgroud)