У меня есть 3 обязательных поля на моей странице и 2 из них скрыты. Значения скрытых полей заполняются jQuery на основе выбора выпадающих списков. Если я просто оставлю все пустое, чтобы ни одно из полей не было заполнено и не нажало кнопку отправки, @Html.ValidationSummery()
перечисляет только ошибку для 1 видимого поля. Как я могу заставить его показывать ошибки, когда скрытые поля также не имеют значения?Проверка ASP.Net не для скрытых файлов
Код для моих скрытых полей:
<li>
<label for="SelectedProjects">Selected Projects:</label>
<select size="1" id="SelectedProjects" name="SelectedProjects" multiple="multiple"></select> <button class="removeButton" data-codetype="Project" type="button">-</button>
@Html.EditorFor(m => m.SelectedProjectCodes)
</li>
<li>
<label for="SelectedTasks">Selected Tasks:</label>
<select size="1" multiple="multiple" id="SelectedTasks" name="SelectedTasks"></select> <button class="removeButton" data-codetype="Task" type="button">-</button>
@Html.EditorFor(m => m.SelectedTaskCodes)
</li>
HTML-визуализации:
<li>
<label for="SelectedProjects">Selected Projects:</label>
<select size="1" id="SelectedProjects" name="SelectedProjects" multiple="multiple"></select> <button class="removeButton" data-codetype="Project" type="button">-</button>
<input data-val="true" data-val-required="The SelectedProjectCodes field is required." id="SelectedProjectCodes" name="SelectedProjectCodes" type="hidden" value="" />
</li>
<li>
<label for="SelectedTasks">Selected Tasks:</label>
<select size="1" multiple="multiple" id="SelectedTasks" name="SelectedTasks"></select> <button class="removeButton" data-codetype="Task" type="button">-</button>
<input data-val="true" data-val-required="The SelectedTaskCodes field is required." id="SelectedTaskCodes" name="SelectedTaskCodes" type="hidden" value="" />
</li>
свойства в ViewModel поддерживает его:
[HiddenInput(DisplayValue = false), Required]
public string SelectedProjectCodes { get; set; }
[HiddenInput(DisplayValue = false), Required]
public string SelectedTaskCodes { get; set; }
Это дизайн. Нет смысла уведомлять пользователя об ошибке в поле, которое они не могут редактировать. Если вы хотите, чтобы поле было проверено, это должно быть нормальное текстовое поле или такое, которое пользователь мог бы контролировать. В противном случае это зависит от вашего приложения, чтобы обеспечить его ценность без привлечения пользователя. –
@ChrisPratt Я не согласен, файл используется для отслеживания нескольких параметров, которые выбирают пользователи, поэтому есть смысл уведомлять пользователя об ошибке, когда скрытое поле пустое, поскольку это указывает, что они не сделали один или несколько выборов. Я также полагал, что это было по дизайну, но у большинства поведения есть способ переопределить дизайн по умолчанию, и знание того, как это сделать, будет полезно для меня и, возможно, для других. – Matthew
Нет. Если пользователю не удалось выполнить другие выборы, тогда ошибка должна быть на * других выборках *, а не на скрытом поле. –