У меня есть приложение MVC 2, и я использую проверку на стороне клиента. Форма имеет часть, где поля создаются динамически из базы данных. Я также хочу разрешить проверку на стороне клиента для любого поля, которое должно быть итоговым (числовым).
Итак, я взял большой блок кода проверки и построил соответствующий оператор
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({ "Fields":
[{ "FieldName": "<%= id %>", "ReplaceValidationMessageContents": true, "ValidationMessageId": "<%= id %>_validationMessage", "ValidationRules":
[{ "ErrorMessage": "You must enter an <%= id %>", "ValidationParameters": {}, "ValidationType": "required" },
{ "ErrorMessage": "The <%= id %> must be more than $0.00", "ValidationParameters": { "minimum": 0.01, "maximum": 1.7976931348623157E+308 }, "ValidationType": "range" },
{ "ErrorMessage": "The field <%= id %> must be a number.", "ValidationParameters": {}, "ValidationType": "number" }
]}], "FormId": "new-creditcard-form", "ReplaceValidationSummary": false, "ValidationSummaryId": "CreditCardSummary"
});
//]]>
Это не вызывает ошибок. Однако при загрузке страницы отображается только проверка, сгенерированная моими аннотациями / элементами управления данными. Я предполагаю, что ошибка заключается в том, что мои проверки помещаются в стек, проверка, созданная сервером, является последней в стеке, и для проверки используется только один элемент, последний включен / первый выключен.
Есть идеи, как мне заставить это работать правильно?
EDIT:
Я обнаружил, что если я вызываю метод с именем __MVC_EnableClientValidation
, который находится в MicrosoftMvcJQueryValidation.cs
сразу после создания полей проверки, он игнорирует любые другие определения проверки. Каким-то образом мне нужно будет ввести свою проверку в определение большого поля проверки. так что при вызове __MVC_EnableClientValidation
все они регистрируются одновременно.