У меня очень странная проблема с ненавязчивой проверкой.
У меня есть модель с атрибутом Required на три свойства перемешивания. Я использую TextBoxFor для двух полей и TextAreaFor для последнего. Проверка работает на TextArea, но НЕ на полях ввода. Глядя на источник, я вижу, что атрибуты, которые добавляет проверка, находятся не на входах, а на текстовом поле. Кроме того, если я ввожу данные в текстовое поле и отправляю их, они отправляют сообщения, и привязка модели MVC ОБЯЗАТЕЛЬНО устанавливает для ModelState.IsValid значение false, а ValidationSummary показывает поля.
Что может привести к тому, что проверка не будет работать с элементами ввода?
Модель:
public class TestModel : IEmail {
public string BCCAddresses {
get;
set;
}
[Required]
public string BodyFormat {
get;
set;
}
public string CCAddresses {
get;
set;
}
[Required]
public string FromAddress {
get;
set;
}
[Required]
public string SubjectLineFormat {
get;
set;
}
}
Вид:
@section head {
<script src="@Url.Content( "~/Scripts/jquery.1.7.1.min.js" )" type="text/javascript"></script>
<script src="@Url.Content( "~/Scripts/jquery.validate.min.js" )" type="text/javascript"></script>
<script src="@Url.Content( "~/Scripts/jquery.validate.unobtrusive.min.js" )" type="text/javascript"></script>
}
@{
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
}
@using ( Html.BeginForm( "Edit", "Email", FormMethod.Post ) ) {
<table>
<tr>
<td>From</td>
<td>@Html.TextBoxFor( x => x.FromAddress, new { style = "width: 500px;" } )</td>
</tr>
<tr>
<td>CC</td>
<td>@Html.TextBoxFor( x => x.CCAddresses, new { style = "width: 500px;" } )</td>
</tr>
<tr>
<td>BCC</td>
<td>@Html.TextBoxFor( x => x.BCCAddresses, new { style = "width: 500px;" } )</td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr>
<td colspan="2">Subject Line</td>
</tr>
<tr>
<td colspan="2">@Html.TextBoxFor( x => x.SubjectLineFormat, new { style = "width: 500px;" } )</td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr>
<td colspan="2">Body Form</td>
</tr>
<tr>
<td colspan="2">@Html.TextAreaFor( x => x.BodyFormat, new { style = "width: 500px; height: 200px" } )</td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr>
<td colspan="2">
<input id="ApplyChanges" type="submit" class="NavigationButton" value="Save Changes" />
<input id="CancelChanges" type="button" class="NavigationButton" value="Cancel Changes" />
</td>
</tr>
<tr>
<td colspan="2">
@Html.ValidationSummary()
</td>
</tr>
<tr><td colspan="2"> </td></tr>
</table>
}
Источник браузера:
<form action="/url" method="post">
<table>
<tbody><tr>
<td>From</td>
<td><input style="width: 500px;" id="FromAddress" name="FromAddress" value="" type="text"></td>
</tr>
<tr>
<td>CC</td>
<td><input style="width: 500px;" id="CCAddresses" name="CCAddresses" value="" type="text"></td>
</tr>
<tr>
<td>BCC</td>
<td><input style="width: 500px;" id="BCCAddresses" name="BCCAddresses" value="" type="text"></td>
</tr>
<tr><td colSpan="2"> </td></tr>
<tr>
<td colSpan="2">Subject Line</td>
</tr>
<tr>
<td colSpan="2"><input style="width: 500px;" id="SubjectLineFormat" name="SubjectLineFormat" value="" type="text"></td>
</tr>
<tr><td colSpan="2"> </td></tr>
<tr>
<td colSpan="2">Body Form</td>
</tr>
<tr>
<td colSpan="2"><textarea style="width: 500px; height: 200px;" id="BodyFormat" cols="20" rows="2" name="BodyFormat" data-val-required="The BodyFormat field is required." data-val="true"></textarea></td>
</tr>
<tr><td colSpan="2"> </td></tr>
<tr>
<td colSpan="2">
<input id="ApplyChanges" class="NavigationButton" disabled="disabled" value="Save Changes" type="submit">
<input id="CancelChanges" class="NavigationButton" value="Cancel Changes" type="button">
</td>
</tr>
<tr>
<td colSpan="2">
<div class="validation-summary-valid" data-valmsg-summary="true"><ul><li style="display: none;"></li>
</ul></div>
</td>
</tr>
<tr><td colSpan="2"> </td></tr>
</tbody></table>
</form>