ASP.Net MVC3电子邮件/电话数据注释不起作用

kol*_*uri 13 validation razor asp.net-mvc-3

我的模型中有以下属性

    [Required]
    [DataType(DataType.PhoneNumber, ErrorMessage = "Invalid Phone Number")]
    public string PhoneNumber
    {
        get;
        set;

    }

    [Required]
    [DataType(DataType.EmailAddress, ErrorMessage = "Invalid Email Address")]
    public string EmailAddress
    {
        get;
        set;

    }
Run Code Online (Sandbox Code Playgroud)

相应的视图是

 <td>
                    Email
                </td>
                <td>
                    @Html.EditorFor(model => model.EmailAddress)
                    @Html.ValidationMessageFor(model => model.EmailAddress, "*")
                </td>
            </tr>
            <tr>
                <td>
                    Phone #
                </td>
                <td>
                    @Html.TextBoxFor(model => model.PhoneNumber)
                    @Html.ValidationMessageFor(model => model.PhoneNumber, "*")
                </td>
Run Code Online (Sandbox Code Playgroud)

当我呈现此页面时,我看到必需属性被触发.但是如果我键入无效数据,则不会触发DataType属性.我看到源html并且没有看到为这些验证发出的任何代码.我也将以下内容作为我观点的一部分

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"/>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"/>
Run Code Online (Sandbox Code Playgroud)

Ale*_*tov 16

您可以考虑使用ASP.NET MVC 3 Futures.是一篇很好的文章,描述了那里的验证:

public class UserInformation
{
    [Required]
    public string Name { get; set; }

    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [Url]
    public string Website { get; set; }

    [Required]
    [CreditCard]
    public string CreditCard { get; set; }

    [Required]
    [FileExtensions(Extensions = "jpg,jpeg")]
    public string Image { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


cwh*_*ris 10

看这篇文章:

DataTypeAttribute验证是否在MVC2中有效?

重要的是要注意DataType属性通常用于格式化目的,而不是用于验证.从技术上讲,有各种各样的电子邮件格式和电话号码格式(请参阅此处的电子邮件:http://www.regular-expressions.info/email.html).

此外,可以使自定义转换器将看似非电子邮件的字符串转换为电子邮件(我在domain dot com = me@domain.com),因此具有默认验证正则表达式飞出窗口.由开发人员根据其特定目的使用正确的正则表达式,并确保他们只接受他们认为准确的地址.


Sha*_*rde 10

与此问题相关,有一些第三方数据验证注释可从http://dataannotationsextensions.org/下载


And*_*ard 7

我自己也有类似的问题.我使用数据类型的电子邮件进行了模型设置,但未将其验证为电子邮件.我在html中注意到,视图生成的电子邮件地址的文本框有一种文本.然后,我改变了我的观点,如下所示,这修复了它:

@Html.TextBoxFor(m => m.Email, new { type = "email" })
Run Code Online (Sandbox Code Playgroud)

正在使用jquery验证javascript库