0

私はMVCアプリを開発しています。

データを検証するために Creat-Veiw で Jquery を使用しています。

Role を追加し、その Role (または UserName と言うことができます) が DB に既に存在するかどうかを確認しています。ロールが既に存在する場合は、検証メッセージが表示され、データベースへの追加を許可しないでください (保存を許可しないでください)。

役割を受け入れるテキストボックスがあり、ぼかし機能で役割が既に存在するかどうかを確認しました。

ロールが既に存在する場合は、検証メッセージが表示されます。しかし、保存ボタンをクリックすると、dbに保存されます。

私はそれを防ぎたいですか?これを行う方法 ?

以下のCreate Viewのコードがあります。

    @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);


         }
4

1 に答える 1

0

データベースに重複レコードを挿入したくない場合は、この目的で検証を使用できます。

jQuery Validate プラグイン (addMethod を使用) を使用して、ロールがデータベースに既に存在するかどうかを確認するカスタム ルールを作成してみてください。 http://matthewmuro.com/2012/05/08/adding-custom- jquery-validation-to-your-form/

于 2013-03-16T06:42:21.713 に答える