私は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);
}