我在使用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
=======================================================希望大侠能帮忙看一下问题出现在什么地方,谢谢了
===============================================
<!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
=======================================================希望大侠能帮忙看一下问题出现在什么地方,谢谢了
我测试的时候使用string类型的验证是不会出现错误的。但结果值好像也不太正确。如果RangeValidator没有这两个属性,使用string类型的时候应该也会报错的吧。
另外,我将Type属性改成"Integer"也还是出现这个问题。
<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>
<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" />这些代码是无用的