проверять ввод значений по умолчанию

Вопрос: Как проверить значения по умолчанию, которые установлены на входы? Я имею в виду, что я хочу игнорировать значения по умолчанию, и если пользователь не добавил какое-либо другое значение, валидация предупредит его, что он ничего не вставил. Модель:

public class ContactUsViewModel
{
    [Required(ErrorMessage = "please enter full name")]
    public string FullName { get; set; }

    [Required(ErrorMessage = "enter email")]
    [Email(ErrorMessage = "enter email")]
    public string Email { get; set; }

    [Required(ErrorMessage = "enter phonenumber")]
    [Mobile(ErrorMessage = "enter phonenumber")]
    public string PhoneNumber { get; set; }

    [Required(ErrorMessage = "please address the issue")]
    public string Issue { get; set; }

        public IDictionary<string, object> FullNameProperties
        {
            get
            {
                return new Dictionary<string, object>()
                             {
                                 {"Value", "FullName"}
                             };
            }
        }
}

Посмотреть:

<div class="ui-contact-us-form">
    @using (Html.BeginForm("Contact","Home",FormMethod.Post))
    {
        <ul>
            <li>
                <label for="FullName" class="form-ui-icon-name ui-block-inline"></label>
                <div class="input-black">
                    @Html.TextBoxFor(x => x.ContactUsViewModel.FullName, Model.ContactUsViewModel.FullNameProperties)
                    @Html.ValidationMessageFor(x => x.ContactUsViewModel.FullName)
                </div>  
            </li>
            <li>
                <label for="PhoneNumber" class="form-ui-icon-phone ui-block-inline"></label>
                <div class="input-black">
                    @Html.TextBoxFor(x => x.ContactUsViewModel.PhoneNumber, Model.ContactUsViewModel.PhoneNumber)
                </div> 
            </li>
            <li>
                <label for="Email" class="form-ui-icon-email ui-block-inline"></label>
                <div class="input-black">
                    @Html.TextBoxFor(x => x.ContactUsViewModel.Email, Model.ContactUsViewModel.EmailProperties)
                    <input type="text" value="????" name="Email"/>
                </div> 
            </li>
            <li>
                <label for="Issue" class="form-ui-icon-pen ui-block-inline"></label>
                <div class="input-black">
                    @Html.TextBoxFor(x => x.ContactUsViewModel.Issue, Model.ContactUsViewModel.IssueProperties)
                </div> 
            </li>
        </ul>
        <div class="spacer"></div> 

        <div class="ui-text-area">
            @Html.TextAreaFor(x => x.ContactUsViewModel.Notes)
        </div>
        <div class="spacer"></div> 

        <div class="form-ui-btn">
            <input type="submit" value="" />
        </div>
    }
</div>

asp.net-mvc-3,unobtrusive-validation,jquery-validate,

2

Ответов: 1


0

Существует более чем одно потенциальное решение этого.

Вероятно, самым простым решением является установка значения по умолчанию для атрибута placeholder вместо атрибута value входного элемента:

@Html.TextBoxFor(x => x.SomeField, new { id = "someFieldId", placeholder = "DefaultVal"})

Это дает следующий HTML:

<input data-val="true" data-val-required="required" id="someFieldId" name="SomeField" placeholder="DefaultVal" value="">

Проверка правильности выражения для модели:

[RegularExpression(@"^(?!.*DefaultVal).*$", ErrorMessage = "invalid")]

Если вы должны использовать атрибут value для вашего элемента ввода, это регулярное выражение делает отрицательный lookahead для рассмотрения ЛЮБОГО значения EXCEPT буква «DefaultVal» как действительного. При этом, эта душа требует, чтобы вы выбрали значение по умолчанию, которое никогда не следует ожидать в качестве фактического ввода от пользователя.

В сочетании с атрибутом [REQUIRED] пользователи могут вводить любое значение, кроме «DefaultVal», null или empty.

asp.net-MVC-3, ненавязчивый-валидация, JQuery-Validate,
Похожие вопросы