表单提交尽管验证LINQtoSQL

时间:2013-09-18 05:58:29

标签: validation linq-to-sql

我正在使用Linq来进行SQL数据注释验证。如果某些字段无效,我会收到验证消息。但是,如果我点击保存,表单仍然会提交(使用无效值)。

查看:

<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
<div id="Content">
@using (Html.BeginForm()) {
....
....

<input type="button" id="btnSave" name="submit" value="Save" />

$("#btnSave").on("click", saveRecord);

function saveRecord() {

//document.forms[0].submit();
$.ajax(
 { type: 'Post' ,
     url: '@Url.Action("Save", "Orders")',
     data: {
         OrderID: '@Model.OrderID',
         ShipName: $('.Name input').val(),
         ShipAddress: '@Model.ShipAddress',
         RequiredDate: '@Model.RequiredDate',
         ShipPostalCode: '@Model.ShipPostalCode'
         },
     dataType: "html",

         success: function  (data){
             //alert ('saved');
              }
     })
return false;
 }

1 个答案:

答案 0 :(得分:0)

嗯,你实际上并没有'提交'表单,你只是在表单内容的ajax帖子,所以任何挂在表单'submit'事件中的验证逻辑都不会触发。

除非表单有效,否则您可能需要添加一个防护来防止ajax发布,例如:

var myForm = $('form');
myForm.validate();
if(myForm.valid()) { //Assuming that valid() is the method provided by your client side validation library.
    $.ajax(...)
}

当服务器收到数据时(在将数据插入数据库之前),您还应该再次验证数据,以阻止人们故意绕过您网页上的验证。

此外,这个问题可能不应该用linq-to-sql标记,因为它似乎纯粹是jQuery验证的问题。 ASP.NET MVC数据注释。