我有一个非常简单的ASP.NET页面,其中包含一些输入字段和验证器.接受双重的一个字段看起来像这样:
<asp:TextBox ID="tbHeight" runat="server" />
<asp:RangeValidator ID="vdHeight" runat="server"
ErrorMessage="Height must be a positive number" Text="*"
ControlToValidate="tbHeight" MinimumValue="0" Type="Double" />
Run Code Online (Sandbox Code Playgroud)
这按预期工作,用户必须输入一个数字> = 0.
更新:这不会像预期的那样工作(项目中的一些奇怪的错误).有关详细信息,请参阅以下答案的注释
然后我尝试接受一个整数的字段:
<asp:TextBox ID="tbGrossTonnage" runat="server" />
<asp:RangeValidator ID="vdGrossTonnage" runat="server"
ErrorMessage="Gross Tonnage must be a positive whole number" Text="*"
ControlToValidate="tbGrossTonnage" MinimumValue="0" Type="Integer" />
Run Code Online (Sandbox Code Playgroud)
加载ASP页面时,会出现以下错误:'vdGrossTonnage'的MaximumValue属性值''无法转换为'Integer'类型.
我在系统中没有任何特定的最大值要求,所以我只想"默认" Int32.MaxValue(虽然我必须输入2,147,483,647,因为MaximumValue似乎不接受Int32.MaxValue常量).
为什么RangeValidator类型的Integera不会接受缺失的MaximumValue属性,但对于其中一种类型,Double这是可以的?
假设我有一个这样的模型属性:
[Range(1, 31, ErrorMessage = "O dia de fechamento deve possuir valores entre 1 e 31")]
public int DataInicial { get; set; }
Run Code Online (Sandbox Code Playgroud)
即使在注释上设置了自定义错误消息,我仍然收到范围注释的默认错误消息“请输入小于或等于 31 的值。”,当我在@Html.TextBoxFor(model => model.DataInicial)场地。
我知道这篇文章,但我认为如果您可以在注释级别设置自定义消息,它应该可以在不设置 App_GlobalResources 和 .resx 文件、设置第三方库或其他任何内容的情况下工作......我知道添加 . resx 文件并将所有这些验证字符串放在那里,是一种“最佳实践”,但是......
那么,我可能哪里出错了,因为消息显示不正确?
先感谢您。
c# asp.net-mvc rangevalidator data-annotations asp.net-mvc-4
我的ASP.NET RangeValidator控件存在问题.
我想允许用户输入折扣金额,此金额必须为负数(<$ 0.00).我想验证在文本框中输入的金额是否为负值,所以我在页面标记中有这个:
<asp:TextBox ID="tbxDiscount" runat="server" />
<asp:RangeValidator ID="rvDiscount" runat="server" ControlToValidate="tbxDiscount"
MinimumValue="0.0" MaximumValue="0.0" EnableClientScript="true"
ErrorMessage="Please enter a negative value for a discount" />
Run Code Online (Sandbox Code Playgroud)
并且我尝试在页面呈现之前在我的代码中动态设置MinimumValue - 相当于我的商品价格.因此,如果该项目是69美元,我想将最小值设置为 - $ 69:
rvDiscount.MinimumValue = (-1.0m * Price).ToString();
Run Code Online (Sandbox Code Playgroud)
麻烦的是:我不断收到此错误消息:
最大值0.0不能小于rvDiscount的最小值-69.00
WTF?!?!?!我来自哪里,-69 $ IS不到0美元......那么问题是什么?
更重要的是:问题的解决方案是什么?
我试图验证一个字符串的长度TextBox.页面上的控件定义如下:
<asp:TextBox runat="server" ID="TB" />
<asp:RangeValidator runat="server" ID="RV"
MinimumValue="3" MaximumValue="20"
ControlToValidate="TB" Type="String" />
Run Code Online (Sandbox Code Playgroud)
但是当页面运行时出现运行时错误
MaximumValue 20不能小于MinimumValue 3
我申请RangeValidator了TextBox.但它总是显示错误:无效范围,虽然我给出了最小值10和最大值25.我希望用户不能输入长度小于10且大于25的值.我希望用户可以输入任何内容,所以我type="string"在RangeValidator.但它总是给我错误消息:无效范围.
<td>
<asp:TextBox ID="tbPassword" runat="server" MaxLength="25" type="password">
</asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPassword" runat="server"
ControlToValidate="tbPassword" ForeColor="red" Display="Dynamic"
ErrorMessage="Password is required." SetFocusOnError="true">
</asp:RequiredFieldValidator>
<asp:RangeValidator ID="rvPassword" ControlToValidate="tbPassword"
ForeColor="red" Display="Dynamic" MinimumValue="10" MaximumValue="25"
SetFocusOnError="true" Type="String" runat="server"
ErrorMessage="Invalid Range">
</asp:RangeValidator>
</td>
Run Code Online (Sandbox Code Playgroud)