Validation DataAnnotation正则表达式不工作

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

我正在尝试使用ASP.NET编写一个web应用程序,它在web表单中采用数字货币值,然后在摘要表中显示该值

我一直有一个问题,无论我在模型中做了什么验证,我仍然能够输入字母和特殊符号,用户应该被阻止直接在网络表单上使用这些字母和符号

我在我的模型中使用了下面的代码,基于此,我看不出我如何仍然能够输入非数值

[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博客