在ValidationSummary和单个验证字符串之间切换的优雅方式

时间:2011-08-27 09:14:10

标签: c# asp.net validation

简而言之,假设我有两个文本框,都有RequiredFieldValidator个控件。如果两个值都无效,我想在ValidationSummary控件中只显示一个字符串,如果只有一个字符串无效,我想在RequiredFieldValidator的位置显示一个字符串。

目前,我所拥有的只是工作但有点混乱。想知道这样做是否更容易,更优雅。

        if ((!Text1Valid.IsValid) && (!Text2Valid.IsValid))
        {
            // Make sure the individual validator shows nothing and ValidationSummary is visible.
            Text1Valid.Display = ValidatorDisplay.None;
            Text2Valid.Display = ValidatorDisplay.None;
            ValidSummary.Visible = true;

            Text1Valid.ErrorMessage = "Both of the values are wrong!";
            Text2Valid.ErrorMessage = String.Empty;
        }
        else
        {
            // Single validation strings visible and ValidationSummary hidden.
            Text1Valid.Display = ValidatorDisplay.Dynamic;
            Text2Valid.Display = ValidatorDisplay.Dynamic;
            ValidSummary.Visible = false;

            Text1Valid.ErrorMessage = "The value is wrong.";
            Text2Valid.ErrorMessage = "The value is wrong.";
        }

1 个答案:

答案 0 :(得分:0)

绝对没有一种开箱即用的方式可以以我所知道的更轻松/优雅的方式做你想做的事。就自定义代码而言,获得一个非常优雅的解决方案有点困难,因为验证逻辑是非常耦合的。我完全可以想象你在每个输入上有各种验证器,不同数量的“链接”输入和不同类型的输入元素的情况。如果这是一次性的情况,类似于你的解决方案可能没问题。如果这是您项目的反复出现的主题,那么您可能想要考虑花多少时间来投资更强大的解决方案。