2

以下のようなプロパティを持つクラス Question があります。

[Required]
public string Subject { get; set; }
[Required]
public string Content { get; set; }

サーバーの検証を試みます。これらのスクリプトを含めました:

<script src="@Links.Scripts.jquery_validate_min_js" type="text/javascript"></script>
<script src="@Links.Scripts.jquery_validate_unobtrusive_min_js" type="text/javascript"></script>

これが「作成」ビューです。

<dt><span>Question title*</span>please be specific but brief</dt>
<dd>@Html.TextBoxFor(m => m.Subject, new { @class = "boxsizingBorder" }) @Html.ValidationMessageFor(m=>m.Subject)</dd>
<dt><span>Question details</span></dt>
<dd>@Html.TextAreaFor(m => m.Content, 7, 30, new { @class = "boxsizingBorder" })@Html.ValidationMessageFor(m => m.Content)</dd>

そのような新しい質問を投稿しようとすると:

$('#saveChanges').click(function () {
    $('#createQuestion').submit();
});

(#saveChangesは私のスパン#createQuestionの ID であり、私のフォームの ID です)

件名フィールドの例を入力しないと、一時的にエラー メッセージが表示されます (フィールドは必須です) が、とにかく質問が投稿されます。これは、jQuery を使用してフォームを投稿しようとしているために発生していますか?

この場合、サーバー検証はどのように機能する必要がありますか?

4

1 に答える 1

1

検証を実行するために送信する前に、実際に Jquery validate を呼び出す必要があります。何かのようなもの:

$('#saveChanges').click(function (event) {
   $("#yourForm").validate();
   if ($("#yourForm").valid()) {
       $('#createQuestion').submit();
   }

   event.preventDefault; //this is needed if your saveChanges button is a submit button
});
于 2012-04-17T21:30:17.807 に答える