如果label包含文本,则使用命名约定来应用类

时间:2009-09-03 13:49:00

标签: asp.net jquery

我是jquery的新手,对不起,如果之前有问过这个问题(可以找到我要找的东西)

我想实现以下对话:如果我创建一个名为'_lblError'的错误标签,如下所示:

<div>
   <asp:label ID="_lblError" text="this is a error msg"/>
</div>

classA或classB将根据空字符串应用于它,或者不在标签的'text'参数中。

我还想将此代码放在将在整个应用程序中使用的外部js文件中。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

首先,您可能需要为标签指定一个可用于选择的css类:

<asp:Label Id="_lblError" Text="This is the error message"
    CssClass="ThisIsWhatWeWillllWorkWith" />

这可能会输出类似

的内容
<span id="ct100__lblError" class="ThisIsWhatWeWillWorkWith">
    This is the error message.
</span>

现在可以使用类作为选择器在jQuery中选择标签,并根据.text()属性是否为空来添加类A或B.

$(function() {
    $('.ThisIsWhatWeWillWorkWith').each(function() {
        if($(this).text() == '') { $(this).addClass('ClassA'); }
        else { $(this).addClass('ClassB'); }
    });
});

所有代码均按原样提供,不保证无需修改即可运行。但是你可以大致了解如何解决这个问题......

编辑:在回复您的评论时,这是一种在不向标签添加css类的情况下执行此操作的方法。不要在错误消息中使用<asp:Label>标记,而是将文字包装在您在页面上硬编码的标记中:

<span class="ThisIsWhatWeWillWorkWith"><asp:Literal ID="__ltlError" Text="This is the error message.</asp:Literal></span>

另一种可能更优雅的方法是创建自己的自定义标签,然后使用它。

public class ErrorLabel : System.Web.UI.WebControls.Label
{
    public ErrorLabel() {
        this.CssClass = "ThisIsWhatWeWillWorkWith";
    }
}

然后使用以下行将错误消息放在页面上:

<asp:ErrorLabel ID="__lblError" Text="This is the error message" />

同样,不确定上面的代码是否会按原样运行。但同样,你会知道该怎么做......

答案 1 :(得分:0)

如果想要提供说明,如果出现错误则具有不同的字体和/或背景,如果错误标签中没有文本则不显示任何内容,那么您可以将控件设置为文字而不是标签。文字控件不会创建没有文本(MSDN doc

的控件