在aspx中有条件地设置HTML5占位符属性

时间:2014-02-26 16:40:53

标签: asp.net

我有一个aspx,它有一个服务器控件TextBox

<asp:TextBox placeholder="myPlaceholder" ID="myID" runat="server" />

我想有条件地设置HTML5属性占位符

我试过这个但没有成功,因为服务器控件不能有<% %>

<asp:TextBox <% if(this.ShowVatNumberCodePlaceholder) {  %>placeholder="myPlaceholder" runat="server" ID="myID" <%}%> />

受我的WPF知识的启发,我在黑暗中用这个

拍摄
<asp:TextBox ID="sttxBillToVatNumber" MaxLength="10" runat="server">
    <% if (this.ShowVatNumberCodePlaceholder)
       {
           %>
    placeholder="myPlaceholder"
    <%
       }
               %>
</asp:TextBox>

从我的阅读材料中我想我只能在服务器端执行此操作 - 我这样做并且有效。

但我宁愿在aspx中使用这个逻辑,以避免在两个文件中分散表示逻辑。

能否在aspx本身中实现这一目标?

2 个答案:

答案 0 :(得分:1)

尝试使用JQuery关联占位符。类似的东西:

$(function () {
    <% if (this.ShowVatNumberCodePlaceholder)
    {
        $("#<%sttxBillToVatNumber.ClientID"%>").attr("placeholder","myPlaceholder");
    }
    %>
});

答案 1 :(得分:1)

您可以通过三元运算符和DataBind调用的组合实现此目的。

标记

<asp:TextBox ID="sttxBillToVatNumber" runat="server" 
         MaxLength="10"
        placeholder='<%# this.ShowVatNumberCodePlaceholder ? "my_placeholder" : "my_other_placeholder" %>'>
</asp:TextBox>

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        sttxBillToVatNumber.DataBind();
    }
}