当我通过jquery发布时,服务器验证不起作用

时间:2012-04-17 10:02:28

标签: c# jquery asp.net-mvc asp.net-mvc-3 razor

我有一个类问题,其属性如下:

[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是我的范围的ID,#createQuestion是我的表单的ID)

如果我没有填写示例主题字段,我会立即看到错误消息(需要字段等),但无论如何都会发布问题。这是因为我试图使用jQuery发布表单还是什么?

在这种情况下,服务器验证应该如何工作?

1 个答案:

答案 0 :(得分: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
});