Validation DataAnnotation正则表达式不工作
我正在尝试使用ASP.NET编写一个web应用程序,它在web表单中采用数字货币值,然后在摘要表中显示该值 我一直有一个问题,无论我在模型中做了什么验证,我仍然能够输入字母和特殊符号,用户应该被阻止直接在网络表单上使用这些字母和符号 我在我的模型中使用了下面的代码,基于此,我看不出我如何仍然能够输入非数值Validation DataAnnotation正则表达式不工作,validation,asp.net-mvc-4,Validation,Asp.net Mvc 4,我正在尝试使用ASP.NET编写一个web应用程序,它在web表单中采用数字货币值,然后在摘要表中显示该值 我一直有一个问题,无论我在模型中做了什么验证,我仍然能够输入字母和特殊符号,用户应该被阻止直接在网络表单上使用这些字母和符号 我在我的模型中使用了下面的代码,基于此,我看不出我如何仍然能够输入非数值 [Numeric] [Min(1, ErrorMessage = "Please enter a valid number")] [Required] public Double GoalA
[Numeric]
[Min(1, ErrorMessage = "Please enter a valid number")]
[Required]
public Double GoalAmount { get; set; }
我能做些什么改变吗
视图看起来像这样
@model WebUI.Models.CreateFundModel
@{
ViewBag.Title = "Create";
}
<div id="container_demo" >
<div id="wrapper">
<div id="login" class="animate form">
@using (Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<h1>Create Fund</h1>
<p>
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)
</p>
<p>
@Html.LabelFor(m => m.GoalAmount)
@Html.TextBoxFor(m => m.GoalAmount)
@Html.ValidationMessageFor(m => m.GoalAmount)
</p>
<p>
@Html.LabelFor(m => m.ReleaseOn)
@Html.EditorFor(m => m.ReleaseOn)
@Html.ValidationMessageFor(m => m.ReleaseOn)
<script type="text/javascript">
$(document).ready(function () {
$("#date").datepicker({
showAnim: 'slideDown',
dateFormat: 'dd/mm/yyyy'
});
});
</script>
</p>
<p>
@Html.LabelFor(m => m.Frequency)
@Html.DropDownList("Frequency", string.Empty)
@Html.ValidationMessageFor(m => m.Frequency)
</p>
<p>
@Html.LabelFor(m => m.RecipiantAccount)
@Html.TextBoxFor(m => m.RecipiantAccount)
@Html.ValidationMessageFor(m => m.RecipiantAccount)
</p>
<p class="login button">
<input type="submit" value="Create" />
</p>
@Html.Partial("_LoginPartial")
}
</div>
</div>
</div>
@model WebUI.Models.CreateFundModel
@{
ViewBag.Title=“创建”;
}
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary()
创建基金
@LabelFor(m=>m.Name)
@Html.TextBoxFor(m=>m.Name)
@Html.ValidationMessageFor(m=>m.Name)
@LabelFor(m=>m.GoalAmount)
@Html.TextBoxFor(m=>m.GoalAmount)
@Html.ValidationMessageFor(m=>m.GoalAmount)
@LabelFor(m=>m.ReleaseOn)
@EditorFor(m=>m.ReleaseOn)
@Html.ValidationMessageFor(m=>m.ReleaseOn)
$(文档).ready(函数(){
$(“#日期”).datepicker({
showAnim:‘滑下’,
日期格式:“dd/mm/yyyy”
});
});
@LabelFor(m=>m.Frequency)
@Html.DropDownList(“频率”,string.Empty)
@Html.ValidationMessageFor(m=>m.Frequency)
@LabelFor(m=>m.RecipiantAccount)
@Html.TextBoxFor(m=>m.RecipiantAccount)
@Html.ValidationMessageFor(m=>m.RecipiantAccount)
@Html.Partial(“_LoginPartial”)
}
此验证发生在服务器端,您是否已将mvc应用程序配置为使用客户端验证
看
另请参见您可以尝试的。它有一些有用的属性,您可以使用 我创建了一个注册表,其中有一个电子邮件验证程序字段,使用大致相同的方式完成。一旦用户登录,我应该切换到客户端验证。[Required(ErrorMessage=“Please Enter your Email”)][RegularExpression(“.+\\@.+\\..+”,ErrorMessage=“Please Enter a valid Email Address”)][Display(Name=“Email”)]公共字符串电子邮件{get;set;}最好总是先验证服务器端。客户端验证有一些缺点,例如人们可以禁用javascript,所以不应该总是依赖它。非常感谢。我已经实现了这一点,并通过将我的电子邮件登录名更改为使用数据注释扩展名{emailAddress]进行了测试,但在使用[Numeric]时仍然如此它允许我继续在文本框中输入字符串。这让我非常困惑。你能编辑你之前的问题,以便我们可以看到你所做的更新吗?:)我现在已经更新了。它对应于scotts博客