Как работает проверка на стороне клиента MVC? - PullRequest
1 голос
/ 14 мая 2010

Я использовал проверку на стороне клиента MVC MVC 2.0, но она не работает должным образом. Сейчас я пытаюсь выяснить, что я сделал не так. Как это работает? У меня есть эта форма:

<form method="post" action="/Sprint/Edit/68d4886b-a86a-4f0b-b713-39219febddf3">

        <fieldset>

            <legend>Sprint</legend>

            <table>

<tbody><tr>
    <td><label for="sprint_Title">Title</label></td>
    <td><input type="text" value="Wichtige Private Erledigungen" name="sprint.Title" id="sprint_Title" class="input-box t-input"></td>
    <td><span class="error"><span id="sprint_Title_validationMessage" class="field-validation-valid"></span></span></td>
</tr>

<tr>
    <td><label for="sprint_Date">Date</label></td>
    <td>
        <div id="sprint_Date" class="date-picker t-input t-widget t-datepicker"><input value="12.05.2010" name="sprint.Date" id="sprint_Date-input" class="t-input" autocomplete="off"><a title="Open the calendar" tabindex="-1" href="#" class="t-link t-icon t-icon-calendar">select date</a></div>
    </td>
    <td><span class="error"><span id="sprint_Date_validationMessage" class="field-validation-valid"></span></span></td>
</tr>


<tr>
    <td><label for="sprint_Description">Description</label></td>
    <td><textarea rows="10" name="sprint.Description" id="sprint_Description" cols="80" class="t-input">dsfs1</textarea></td>
    <td><span class="error"><span id="sprint_Description_validationMessage" class="field-validation-valid"></span></span></td>
</tr>
            </tbody></table>

        </fieldset>

    <input type="submit" value="Submit" name="Submit" id="Submit" class="t-button t-state-default">

</form>

И этот скрипт отображается:

<script type="text/javascript">
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"sprint.Title","ReplaceValidationMessageContents":true,"ValidationMessageId":"sprint_Title_validationMessage","ValidationRules":[{"ErrorMessage":"Title is required.","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"sprint.Date","ReplaceValidationMessageContents":true,"ValidationMessageId":"sprint_Date_validationMessage","ValidationRules":[{"ErrorMessage":"Das Feld \"Date\" ist erforderlich.","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"sprint.Description","ReplaceValidationMessageContents":true,"ValidationMessageId":"sprint_Description_validationMessage","ValidationRules":[]}],"FormId":null,"ReplaceValidationSummary":false});
//]]>
</script>

Но, к моему удивлению, точка останова останавливается только при загрузке страницы. Я думаю, что это должно быть также, если поле с вкладками? По крайней мере, после того, как я нажму кнопку записи.

Почему проверка на стороне клиента не работает для меня?

1 Ответ

0 голосов
/ 14 мая 2010

Это просто устанавливает обработчики, на самом деле он не попадет в эту строку при отправке формы или при переходе между полями.

Вы получите ошибки проверки после потери фокуса и / или отправки формы, однако, если у вас есть другие ошибки JavaScript на странице, это может привести к сбою.

Кроме того, убедитесь, что вы указали в своем заголовке необходимые файлы javascript:

  • MicrosoftAjax.js
  • MicrosoftMvcValidation.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...