проверить входные данные значениями по умолчанию - PullRequest
2 голосов
/ 01 ноября 2011

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

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>

1 Ответ

0 голосов
/ 08 июля 2018

Существует несколько возможных решений.

Возможно, самое простое решение - установить значение по умолчанию для атрибута placeholder вместо атрибута value элемента input:

@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")]

Если необходимо использовать атрибут значения в элементе ввода,Это регулярное выражение делает негативный взгляд на ЛЮБОЕ значение, КРОМЕ литерала DefaultVal как допустимого.Тем не менее, это решение требует от вас выбрать значение по умолчанию, которое никогда не следует ожидать в качестве фактического ввода от пользователя.

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

...