gpt4 book ai didi

jquery - ASP.NET MVC ValidationAttribute 导致客户端验证规则无效

转载 作者:行者123 更新时间:2023-12-01 00:22:23 26 4
gpt4 key购买 nike

我正在开发 ASP.NET MVC 5 应用程序。我正在使用属性来验证我的模型(后端和前端)。

我的一个模型有一个如下所示的属性:

[Required( ... )]
[Range( 0d, Double.MaxValue, ...)]
public Decimal Amount { get; set; }

0Double.MaxValue 的所有值都可以作为金额。 (这在后端完美运行)

在我的用户界面中,我有一个用于此模型的表单:

@using (Html.BeginForm(null, null, FormMethod.Post))
{
@* Anti Forgery Token *@
@Html.AntiForgeryToken()
<fieldset>
...
<section>
@Html.LabelFor(model => model.Amount, new { @class = "label" })
<label class="input">
@Html.EditorFor(model => model.Amount, new { htmlAttributes = new { placeholder = Resources.Amount } })
@Html.RenderCombinedValidationMessages(x => x.Amount, false)
</label>
</section>
</fieldset>
@Html.RenderGlobalValidationMessages()
<footer>
<div class="btn-group">
<a href="@Html.GetPreviousPage( Url.Action( "Index", "Controller" ) )" class="btn btn-default">@Resources.Back</a>
<button type="submit" class="btn btn-primary">@Resources.Create</button>
</div>
</footer>
}

此代码创建的 HTML 如下所示:

<form action="/Controller/Create" class="smart-form" method="post" novalidate="novalidate">
<fieldset>
<section>
<label class="label" for="Amount">Amount</label>
<label class="input">
<input
data-val="true" data-val-number="The field Amount must be a number."
data-val-range="Amount must be between 0 and 1.79769313486232E+308."
data-val-range-max="1.79769313486232E+308"
data-val-range-min="0"
data-val-required="Amount is required."
id="Amount" name="Amount" placeholder="Amount" type="text" value="">
<ul class="validationMessageList" data-property-name="Amount"></ul><span class="field-validation-valid" data-valmsg-for="Amount" data-valmsg-replace="true"></span>
</label>
</section>
</fieldset>
<footer>
<div class="btn-group">
<a href="http://localhost:26165/Controller/Create" class="btn btn-default">Back</a>
<button type="submit" class="btn btn-primary">Create</button>
</div>
</footer>
</form>

现在的问题是:

基于验证属性,HtmlHelper 创建最大范围的 jQuery 验证规则:data-val-range-max="1.79769313486232E+308"。这导致 jQuery 验证只允许 0 到 1.79 之间的值……。 (值小于 2)

我该如何解决这个问题?

最佳答案

我知道的一种方法是:

      [Range(typeof(decimal), "0", "79228162514264337593543950335")]
public decimal Amount { get; set; }

嗯,但这是一个真正的交易。

十进制 MaxValue 为 79228162514264337593543950335。 https://msdn.microsoft.com/en-us/library/system.decimal.maxvalue(v=vs.110).aspx

关于jquery - ASP.NET MVC ValidationAttribute 导致客户端验证规则无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com