ASP.Net MVC3 Электронная почта / телефонные аннотации данных не работают - PullRequest
13 голосов
/ 12 апреля 2011

У меня есть следующие свойства в моей модели

    [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;

    }

Соответствующее представление равно

 <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>

Когда я отображаю эту страницу, я вижу, что срабатывает обязательный атрибут.Но атрибут 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"/>

Ответы [ 4 ]

16 голосов
/ 06 января 2012

Вы можете рассмотреть возможность использования 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; }
}
10 голосов
/ 19 апреля 2011

Относительно этого вопроса есть некоторые сторонние аннотации для проверки данных, которые можно загрузить по адресу http://dataannotationsextensions.org/

10 голосов
/ 12 апреля 2011

См. Этот пост:

Работает ли проверка DataTypeAttribute в MVC2?

Важно отметить, что атрибут DataType обычно используется в целях форматирования, а не дляПроверка.Технически существует широкий спектр форматов электронной почты и форматов телефонных номеров (см. Здесь для электронной почты: http://www.regular -expressions.info / email.html ).

Кроме того, пользовательские конвертеры могут бытьсделано для того, чтобы конвертировать, казалось бы, не-электронные строки в электронные письма (me at domain dot com = me@domain.com), и, таким образом, наличие регулярных выражений проверки по умолчанию вылетает из окна.Разработчик может использовать правильное регулярное выражение для своих конкретных целей и гарантировать, что он принимает только адрес, который, по его мнению, является точным.

7 голосов
/ 06 января 2012

У меня просто была похожая проблема.У меня была настройка модели с типом данных электронной почты, но она не проверялась как электронная почта.Я заметил в html, что представление производило текстовое поле для адреса электронной почты, имело тип текста.Затем я изменил свое представление, как показано ниже, и это исправило это:

@Html.TextBoxFor(m => m.Email, new { type = "email" })

при использовании библиотеки jquery validate javascript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...