【求助】rangeVal的MaximumValue属性的值无法转换为类型Integer

dlgdd 2012-10-11 04:12:00
我在使用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


=======================================================

希望大侠能帮忙看一下问题出现在什么地方,谢谢了。。。
...全文
447 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-10-12
  • 打赏
  • 举报
回复
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" />

这些代码是无用的
孟子E章 2012-10-12
  • 打赏
  • 举报
回复
<!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>
dlgdd 2012-10-12
  • 打赏
  • 举报
回复
有没有大侠能帮小弟把这段代码改成可运行的贴出来或发给我?谢谢了。
dlgdd 2012-10-11
  • 打赏
  • 举报
回复
我找了一下,RangeValidator确实没找到这两个属性,我这个代码是从书上抄的,书上原来是VB的,我改成了C#的。
我测试的时候使用string类型的验证是不会出现错误的。但结果值好像也不太正确。如果RangeValidator没有这两个属性,使用string类型的时候应该也会报错的吧。
另外,我将Type属性改成"Integer"也还是出现这个问题。
[Quote=引用 5 楼 的回复:]
<asp:RangeValidator id="rangeVal" Type="String" ControlToValidate="txtComp"
MaximumControl="txtMax" MinimimControl="txtMin" runat="server" />

你设置MinimumValue MaximumValue了吗?


http://msdn.micro……
[/Quote]
孟子E章 2012-10-11
  • 打赏
  • 举报
回复
<asp:RangeValidator id="rangeVal" Type="String" ControlToValidate="txtComp"
MaximumControl="txtMax" MinimimControl="txtMin" runat="server" />

你设置MinimumValue MaximumValue了吗?


http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.rangevalidator.aspx

这个控件哪里有MaximumControl属性啊
dlgdd 2012-10-11
  • 打赏
  • 举报
回复
不会啊,要输入的都是两位数的整数,不存在超出范围的问题呀。[Quote=引用 2 楼 的回复:]
是不是那个 MaximumValue 超出了int的范围,你看看MaximumValue是多少
[/Quote]
孟子E章 2012-10-11
  • 打赏
  • 举报
回复
<asp:RangeValidator id="rangeVal" Type="String" ControlToValidate="txtComp"
MaximumValue="100" MinimumValue="0" runat="server" />

http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.rangevalidator_properties.aspx
bdmh 2012-10-11
  • 打赏
  • 举报
回复
是不是那个 MaximumValue 超出了int的范围,你看看MaximumValue是多少
孟子E章 2012-10-11
  • 打赏
  • 举报
回复
MaximumValue是要一个整数类型的

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧