我在使用RangeValidator控件的时候出现rangeVal的MaximumValue属性的值无法转换为类型Integer的错误,有没有大侠知道问题出在哪里?由于刚学asp.net,很多东西都不太懂代码如下:
===============================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@Page clienttarget=downlevel %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<center>
<head>
    <title>RangeValidator控件演示</title>
    <!-- 用于判断要验证的值是否在两个值范围之内 -->
    <script language="C#" runat="server">
    void Button1_Click(Object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            lblOutput.Text="结果正确!";
        }
        else 
        {
            lblOutput.Text="结果不正确!";
        }
    }
    void lstOperator_SelectedIndexChanged(Object sender,EventArgs e)
    {
        rangeVal.Type=(ValidationDataType)lstType.SelectedIndex;
        rangeVal.Validate();
    }
    </script>
</head>
<body>
<h3><font face="Verdana">RangeValidator控件演示</font></h3>
<p></p>
<form runat="Server">
<table bgcolor="#eeeeee" cellpadding=10>
<tr valign="top">
<td>
<h5><font face="Verdana">请输入要验证的值:</font></h5>
<asp:TextBox Selected id="txtComp" runat="server" />
</td>
<td>
<h5><font face="Verdana">数据类型:</font></h5>
<asp:DropDownList id="lstType"
OnSelectedIndexChanged="lstOperator_SelectedIndexChanged" runat="server">
<asp:ListItem Selected Value="String">String</asp:ListItem>
<asp:ListItem Value="integer">Integer</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<h5><font face="Verdana">最小值:</font></h5>
<asp:TextBox id="txtMin" runat="server" />
</td>
<td>
<h5><font face="Verdana">最大值:</font></h5>
<asp:TextBox id="txtMax" runat="server" />
<asp:Button Text="验证" id="Button1" OnClick="Button1_Click" runat="server" />
</td>
</tr>
</table>
<asp:RangeValidator id="rangeVal" Type="String" ControlToValidate="txtComp"
MaximumControl="txtMax" MinimimControl="txtMin" runat="server" />
<br />
<asp:Label id="lblOutput" Font-Name="Verdana" Font-Size="10pt" runat="server" />
</form>
</body>
</center>
</html>
=================================报错信息如下:===================================================“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------“rangeVal”的“MaximumValue”属性的值“”无法转换为类型“Integer”。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: “rangeVal”的“MaximumValue”属性的值“”无法转换为类型“Integer”。源错误: 只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL: 1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如:   <%@ Page Language="C#" Debug="true" %>或:2. 将以下的节添加到应用程序的配置文件中:<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。  堆栈跟踪: 
[HttpException (0x80004005): “rangeVal”的“MaximumValue”属性的值“”无法转换为类型“Integer”。]
   System.Web.UI.WebControls.RangeValidator.ValidateValues() +1078419
   System.Web.UI.WebControls.RangeValidator.ControlPropertiesValid() +12
   System.Web.UI.WebControls.BaseValidator.get_PropertiesValid() +21
   System.Web.UI.WebControls.BaseValidator.Validate() +56
   ASP._01web页面_rangevalidator_aspx.lstOperator_SelectedIndexChanged(Object sender, EventArgs e) +50
   System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +111
   System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent() +134
   System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +10
   System.Web.UI.Page.RaiseChangedEvents() +165
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1485 
=======================================================希望大侠能帮忙看一下问题出现在什么地方,谢谢了

解决方案 »

  1.   

    MaximumValue是要一个整数类型的
      

  2.   

    是不是那个 MaximumValue 超出了int的范围,你看看MaximumValue是多少
      

  3.   

    本帖最后由 net_lover 于 2012-10-11 16:16:30 编辑
      

  4.   

    本帖最后由 net_lover 于 2012-10-11 16:52:19 编辑
      

  5.   

    我找了一下,RangeValidator确实没找到这两个属性,我这个代码是从书上抄的,书上原来是VB的,我改成了C#的。
    我测试的时候使用string类型的验证是不会出现错误的。但结果值好像也不太正确。如果RangeValidator没有这两个属性,使用string类型的时候应该也会报错的吧。
    另外,我将Type属性改成"Integer"也还是出现这个问题。
      

  6.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><%@ Page ClientTarget="downlevel" %><html xmlns="http://www.w3.org/1999/xhtml">
    <center>
        <head>
            <title>RangeValidator控件演示</title>
            <script language="C#" runat="server">
                void Button1_Click(Object sender, EventArgs e)
                {
                    if (Page.IsValid)
                    {
                        lblOutput.Text = "结果正确!";
                    }
                    else
                    {
                        lblOutput.Text = "结果不正确!";
                    }
                }
                void lstOperator_SelectedIndexChanged(Object sender, EventArgs e)
                {
                    rangeVal.Type = (ValidationDataType)lstType.SelectedIndex;
                    rangeVal.Validate();
                }
            </script>
        </head>
        <body>
            <h3>
                <font face="Verdana">RangeValidator控件演示</font></h3>
            <p>
            </p>
            <form id="Form1" runat="Server">
            <table bgcolor="#eeeeee" cellpadding="10">
                <tr valign="top">
                    <td>
                        <h5>
                            <font face="Verdana">请输入要验证的值:</font></h5>
                        <asp:TextBox ID="txtComp" runat="server" />
                    </td>
                    <td>
                        <h5>
                            <font face="Verdana">数据类型:</font></h5>
                        <asp:DropDownList ID="lstType" OnSelectedIndexChanged="lstOperator_SelectedIndexChanged"
                            runat="server">
                            <asp:ListItem Selected="true" Value="String">String</asp:ListItem>
                            <asp:ListItem Value="integer">Integer</asp:ListItem>
                        </asp:DropDownList>
                        <asp:Button Text="验证" ID="Button1" OnClick="Button1_Click" runat="server" />
                    </td>
                </tr>
            </table>
            <asp:RangeValidator ID="rangeVal" Type="String" ControlToValidate="txtComp" MaximumValue="99"
                MinimumValue="0" runat="server" />
            <br />
            <asp:Label ID="lblOutput" Font-Name="Verdana" Font-Size="10pt" runat="server" />
            </form>
        </body>
    </center>
    </html>
      

  7.   

    RangeValidator 是验证你的txtComp输入值是否满足MaximumValue和MinimumValue范围的。你要搞清楚RangeValidator 是怎么使用的,
    <h5><font face="Verdana">最小值:</font></h5>
    <asp:TextBox id="txtMin" runat="server" />
    </td>
    <td>
    <h5><font face="Verdana">最大值:</font></h5>
    <asp:TextBox id="txtMax" runat="server" />这些代码是无用的