Насколько я знаю, атрибут DataType используется для форматирования, но только когда вы используете @Html.EditorFor(model => model.Field)
.
Примеры из полей модели, cshtml и полученного HTML:
Поля модели:
[Required]
[DataType(DataType.Text)]
[Display(Name = "Name")]
public string Name { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Required]
[DataType(DataType.MultilineText)]
[Display(Name = "Description")]
public string Desc { get; set; }
Cshtml:
<div class="form-section">
@Html.LabelFor(x => x.Name)
@Html.EditorFor(x => x.Name)
</div>
<div class="form-section">
@Html.LabelFor(x => x.Password)
@Html.EditorFor(x => x.Password)
</div>
<div class="form-section">
@Html.LabelFor(x => x.Desc)
@Html.EditorFor(x => x.Desc)
</div>
Результирующий HTML:
<div class="form-section">
<label for="Name">Name</label>
<input class="text-box single-line" id="Name" name="Name" type="text" value="">
</div>
<div class="form-section">
<label for="Password">Password</label>
<input class="text-box single-line password" id="Password" name="Password" type="password" value="">
</div>
<div class="form-section">
<label for="Desc">Description</label>
<textarea class="text-box multi-line" id="Desc" name="Desc"></textarea>
</div>
Я знаю, что это старый пост, но, может быть, я смогу пролить свет на ситуацию для других, пришедших таким образом
EDIT:
Там может быть некоторая проверка, прикрепленная к этим, но только на стороне клиента. Не полагайтесь на эти атрибуты для фактической проверки, это всегда должно выполняться на стороне сервера (на стороне клиента только для удобства пользователя)