尝试在ASP.net webform中应用引导程序样式

时间:2016-08-11 21:23:36

标签: c# asp.net twitter-bootstrap

我有一个文本框,其上附有asp:RegularExpressionValidator

<div class="form-group col-sm-6 <%= (revAlertValue.IsValid == false ? "has-error" : "") %>">
<label for="AlertValue" class="control-label col-sm-4">Alert Value</label>
<div class="col-sm-4 input-group">
    <span class="input-group-btn">
        <asp:Button ID="btnMediumValue" CssClass="btn btn-warning" runat="server" Text="Low" OnClientClick="btnMediumValue_Click" OnClick="btnMediumValue_Click" />
    </span>
    <asp:TextBox CssClass="form-control text-center" CausesValidation="true" ID="tbAlertValue" runat="server" MaxLength="4" />
    <asp:RegularExpressionValidator ID="revAlertValue" runat="server"
        ControlToValidate="tbAlertValue" ErrorMessage=""
        ValidationExpression="^[1-9]\d*$" />
    <asp:RequiredFieldValidator ID="rfvAlertValue" runat="server" ControlToValidate="tbAlertValue" />
    <span class="input-group-btn">
        <asp:Button ID="btnHighValue" CssClass="btn btn-danger" runat="server" Text="High" OnClientClick="btnHighValue_Click" OnClick="btnHighValue_Click" />
    </span>
</div>

如果正则表达式验证程序无效,我基本上会尝试将has-error类应用于form-group。但是,当我去测试并输入会使正则表达式验证器失败的文本时,不会应用该类。

我试过用其他方式写表达式:

<%= (revResendEvery.IsValid == false) ? "has-error" : "" %>
<%= (revAlertValue.IsValid == false ? "has-error" : "") %>

我认为可能必须在按下提交按钮时触发,或者在按下提交后必须将更多代码添加到处理类添加的.aspx.cs但是没有也可以做到这一点。

1 个答案:

答案 0 :(得分:1)

为了完成此客户端,您需要使用ASP.NET呈现的客户端代码。以下是您可能在页面上包含的某些脚本的示例。

(function () {
    var originalRegularExpressionValidator = RegularExpressionValidatorEvaluateIsValid;
    RegularExpressionValidatorEvaluateIsValid = function (val) {
        var originalValidationResult = originalRegularExpressionValidator(val);

        if (!originalValidationResult) {
            var formGroup = $("#" + val.controltovalidate).closest(".form-group");
            formGroup.addClass("has-error");
        }
        return originalValidationResult;
    }
})();

当然,这假设您在页面上有jQuery(对于closestaddClass方法),但您可以将其替换为您想要的任何内容。

此外,您可能希望查看覆盖ASP.NET渲染的Page_ClientValidate函数。 StackOverflow上有很多问题可以解决这个问题。