【问题标题】:Customise error message on asp.net range validator在 asp.net 范围验证器上自定义错误消息
【发布时间】:2017-04-24 21:00:00
【问题描述】:

您好,是否可以根据文本框的值更改 asp.net 范围验证器的错误消息。例如,如果数字小于 0,则显示错误消息“数字不能小于 0”,如果大于最大值,则将错误消息设置为“数字不能高于最大值”。

if (stockCount < Convert.ToInt32(range.MinimumValue))
{
    range.ErrorMessage = "Quantity has to be minumm of 1";
}
else if (stockCount > Convert.ToInt32(range.MaximumValue))
{
    range.ErrorMessage = "Not enough items in stock";
}

这是我没有成功的代码,任何建议或建议都非常感谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您可以在 TextBox 上使用简单的 jQuery 侦听器并根据其输入更改错误消息。

    <script type="text/javascript">
        $('#<%= TextBox1.ClientID %>').keyup(function () {
            var validator = document.getElementById('<%= RangeValidator1.ClientID %>');
            var errorMsg = 'Your value of ' + $(this).val() + ' is incorrect (max is ' + validator.maximumvalue + ')';
            $('#<%= RangeValidator1.ClientID %>').text(errorMsg);
        });
    </script>
    

    【讨论】:

      【解决方案2】:

      如果你想在 ASP.NET 和 C# 中只尝试以下方法:

      为您的文本框声明rangevalidator

       <asp:TextBox id="text1" runat="server"></asp:TextBox><br />
       <asp:RangeValidator EnableClientScript="false" 
                                id="RangeValidator1" 
                                runat="server" 
                                ControlToValidate="text1" >
            </asp:RangeValidator>
      

      您必须调用RangeValidatorValidate() 函数。 在你的代码中,在你想要验证的地方尝试下面的伪代码。 (未测试)

          RangeValidator1.MinimumValue = 0;
          RangeValidator1.MaximumValue = 10;
          RangeValidator1.Type = ValidationDataType.Integer;
          RangeValidator1.Validate();
      
          if (!RangeValidator1.IsValid)
          {
               if(Convert.ToInt32(text1.Text) < 0)
               {
                  RangeValidator1.ErrorMessage = "number can not be less than 0";    
               }
               else
               {
                   RangeValidator1.ErrorMessage = "number can't be above maxvalue";    
               }    
          }
      

      【讨论】:

      【解决方案3】:

      也许我的回答没有显示两条不同的消息,但我认为将消息总结在一条错误消息中更简单、更清晰。 您可以使用 Class 并将带有错误消息的 Range 验证器放在顶部。

      如果我的建议不符合您的喜好,我深表歉意。

      public class Example
      {
          [Range(10, 1000, ErrorMessage = "Value must be between {1} and {2}.")]
          public int Quantity { get; set; }
          
          ....
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-18
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多