2013-03-16 42 views
0

我正在开发MVC应用程序。如何防止重复数据的保存?

我在Creat-Veiw中使用Jquery来验证数据。

我正在添加角色并检查该角色(或者您可以说UserName)是否已经存在于数据库中。 如果Role已经存在,那么应该显示验证消息,并且不应允许添加到db中(不应允许保存)。

我有一个接受角色的文本框,我已经检查了模糊函数是否已经存在角色。

每件事情都很好,如果角色已经存在,那么验证信息就会出现。 但点击保存按钮后,它保存在分贝。

我想阻止它?这个怎么做 ?

我有下面的代码创建视图。

@model IEnumerable<PaymentAdviceEntity.Role> 
    <div id="roleList"> 
    <div class="span6"> 
    <div class="span12 HeaderField2"> 
     Roles 
    <legend style="margin-bottom:2px;margin-top:5px;"></legend> 
    </div> 

    <div class="span12">  




     <div style="display:inline-block"></div> 
     <div id="addrole" style="display:none"> 
     <span> @Html.TextBox("RoleName", String.Empty, new { @id = "RoleName",style="margin-bottom:0px;" })</span> 

      <span> 
       <input type="button" value="Save" id="btnSave"/> 
       <input type="button" value="Cancel" id="btnCancel" /> 
      </span> 
     </div>  
     <div style="margin-top:5px;"> 
<span id="RoleNameValidation" style="display:none;color:Red;">Role already exists</span> 
     </div> 

    </div> 
    </div> 

为此,我使用下面的jquery。

$("#RoleName").blur(function() 
    { 
     var Role_Name = $('#RoleName').val(); 
     //alert(RoleName); 
     var url = "@Html.Raw(Url.Action("checkForUniqueName","Role",new {@RName = "RoleName"}))"; 
     url = url.replace("RoleName", Role_Name); 
     $.post(url, function (data) 
     { 
      if (data == false) { 

       $("#RoleNameValidation").show(); 
       $('#RoleName').focus(); 
      } 
      else { 
       $("#RoleNameValidation").hide() 
      } 
     }); 
    }); 

和控制器代码是....

public ActionResult checkForUniqueName(string RName) 
     { 
      bool Valid = false; 

      var RoleList = from e in db.Roles 
          where e.Name.Equals(RName) 
          select e; 
      if (RoleList.Count() > 0) 
      { 
       Valid = false; 
      } 
      else 
      { 
       Valid = true; 
      } 

      return Json(Valid, JsonRequestBehavior.AllowGet); 


     } 

回答

0

您可以使用验证用于此目的,如果你不想在数据库中插入重复记录。

尝试创建使用(使用addMethod),它检查的作用是database.You已经存在,可以在http://matthewmuro.com/2012/05/08/adding-custom-jquery-validation-to-your-form/

+0

验证的信息,那就找好帮助jQuery验证插件自定义规则...但仍录得到保存... – Nil 2013-03-16 06:46:06

+0

请确保您在表格中附上此表单并在提交时验证表单,如果表单有效,那么只需执行控制器操作 – Cris 2013-03-16 07:48:36

+1

您应该检查执行保存操作的控制器以及使用jQuery验证 – 2013-03-16 08:22:39