在验证错误上设置相关输入的样式,如MVC

时间:2010-10-13 16:00:58

标签: asp.net

我在网上搜索并没有找到任何有帮助的东西,所以我想在这里问。

我有一个简单的asp.net 2.0表单。

<form runat="server">
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" />

    <asp:TextBox ID="txt1" runat="server" ValidationGroup="valGroup1"></asp:TextBox>
    <asp:RequiredFieldValidator ControlToValidate="txt1" ValidationGroup="valGroup1" runat="server" Display="Dynamic" ID="val1" ErrorMessage="*"></asp:RequiredFieldValidator>

    <asp:Button ID="btn1" runat="server" ValidationGroup="valGroup1" CausesValidation="true" Text="submit" />
</form>

我想要做的是在特定输入的验证失败时更改输入的样式。最好是添加一个类,而不是内联样式。

当javascript无法通过代码隐藏时,我可以这样做,但我想要做的是在javascript可用时也会发生同样的情况。

我知道ASP.NET会注入一个名为Page_Validators的全局js变量,该变量是页面上所有验证器跨度的数组。除了循环遍历所有这些之外,还有更简单的方法吗?

修改

我可以用以下方法做到这一点:

<script type="text/javascript">

        function ValidateInputs() {

            var validators = Page_Validators;

            for (var i = 0; i < validators.length; i++) {
                var validator = validators[i];
                if (!validator.isvalid) {
                    document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;");
                }
            }

        }

    </script>

只是想知道是否有更好的方法?

我可以获得微软验证脚本来调用我的验证方法吗?或者我可以手动挂钩验证事件吗?

2 个答案:

答案 0 :(得分:0)

这是一个非常好的方式;没有公共事件或其他东西可以利用,除非你想用自己的自定义事件(变得混乱)开始替换公共事件。

HTH。

答案 1 :(得分:0)

事实证明我的答案是我唯一能得到的答案!

<script type="text/javascript">

        function ValidateInputs() {


            Page_ClientValidate();//Validate the validators using microsofts validation

            var validators = Page_Validators;

            for (var i = 0; i < validators.length; i++) {
                var validator = validators[i];
                if (!validator.isvalid) {
                    document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;");
                }
            }

        }

    </script>

此外,在按钮上,将OnClientClick="ValidateInputs();"设置为OnClientClick="ValidateInputs();return false;"