Вспомогательный HTML TextBoxFor

У меня есть страница cshtlm со следующим кодом:

@using (Html.BeginForm("Optional", "ConfigurationSilo2", FormMethod.Post, new { id = "storeDataForm" }))
{          
     @Html.TextBoxFor(x => x.Height)  

    <div align="right">
        <input type="submit" id="Avanti" value="@ViewRes.ConfigurationString.buttonNext" name="@ViewRes.ConfigurationString.buttonNext" />
    </div>
}

Мой сгенерированный HTML-код:

<form action="/ConfigurationSilo2/Optional" id="storeDataForm" method="post">

     <input data-val="true" data-val-number="The field Height must be a number." data-val-required="The Height field is required." id="Height" name="Height" type="text" value="0" />          
    <div align="right">
        <input type="submit" id="Avanti" value="Next" name="Next" />
    </div>
</form>

Это мой класс кода модели:

public class Spondina
{
    public int Height { get; set; }
    public int Quantity { get; set; }
    public float UnitPrice { get; set; }
    public float TotalCost { get; set; }
}

почему в моем входном теге есть теги data-val data-val-number data-val-required?


person gorgonzola    schedule 15.04.2013    source источник


Ответы (1)


Это проверка MVC. Есть ли у вас аннотации данных в вашей модели? Я предполагаю, что свойство Height имеет против него [Required]? Атрибуты используются ненавязчивой структурой проверки клиента. Вот строка в хелпере ввода, которая добавляет эти теги:

tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata));

HtmlHelper имеет ClientValidationRuleFactory, который инициализируется в конструкторе HtmlHelper, среди прочего, ClientDataTypeModelValidatorProvider, который проверяет метаданные вашей модели и применяет соответствующие правила проверки, например, в случаях числовых типов в вашей модели. Если у вас включена проверка клиента и числовые типы в вашей модели, например. Height как int, помощники будут внедрять ненавязчивую проверку клиента в эти входные данные во время рендеринга.

person levelnis    schedule 15.04.2013
comment
Если вы не хотите включать проверку на стороне клиента, вы можете установить для записей appSetting ClientValidationEnabled и UnobtrusiveJavaScriptEnabled значение false. - person Erik Schierboom; 15.04.2013
comment
Нет, у меня нет атрибута Высота. - person gorgonzola; 15.04.2013
comment
Обновлен мой ответ с большим количеством основных причин - person levelnis; 15.04.2013
comment
@Erik Schierboom: как и где мне установить эти настройки приложения? - person gorgonzola; 15.04.2013
comment
@gorgonzola Вы можете найти их в файле Web.config вашего проекта. - person Erik Schierboom; 15.04.2013
comment
@gorgonzola см. здесь: stackoverflow.com/questions /15959349/ - person levelnis; 15.04.2013