یکپارچه سازی سیستم اعتبارسنجی ASP.NET MVC با Kendo UI validator
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۰۸/۲۷ ۱۱:۵۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
<script src="~/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> public class OrderDetailViewModel
{
[StringLength(15)]
[Required]
public string Destination { get; set; }
} @model Mvc4TestViewModel.Models.OrderDetailViewModel
@using (Ajax.BeginForm(actionName: "Index", controllerName: "Home",
ajaxOptions:new AjaxOptions(),
htmlAttributes: new { id = "Form1", name ="Form1" }, routeValues: new { }
))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>OrderDetail</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Destination)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Destination, new { @class = "k-textbox" })
@Html.ValidationMessageFor(model => model.Destination)
</div>
<p>
<button class="k-button" type="submit" title="Sumbit">
Sumbit
</button>
</p>
</fieldset>
}
@section JavaScript
{
<script type="text/javascript">
$(function () {
$("#Destination").kendoComboBox({
dataSource: [
"loc 1",
"loc 2"
]
});
</script>
}
$.extend( $.validator, {
defaults: {
//…
ignore: ":hidden", <script type="text/javascript">
$(function () {
var form = $('#Form1');
form.data('validator').settings.ignore = ''; // default is ":hidden".
});
</script> <script type="text/javascript">
$.validator.setDefaults({
ignore: ""
});
</script> <script src="~/Scripts/kendo.aspnetmvc.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("form").kendoValidator();
});
</script>
Required StringLength Range RegularExpression
[Moon.Web.Validation.RemoteValidator("IsUserExist", "Admin", HttpMethod = "POST", ErrorMessage = "نام کاربری قبلا ثبت شده است.")]
public string Username { get; set; } @Html.EditorFor(model => model.Username) @Html.ValidationMessageFor(model => model.Username)
[HttpPost]
public ActionResult IsUserExist(string Username)
{
if (userSerive.isUser(Username)) return Json(true);
return Json(false);
} $.validator.methods.remote = function () { /* disabled */ };
$("form").kendoValidator({
onfocusout: true,
onkeyup: true,
rules: {
remote: function (input) {
var remoteAttr = input.attr("data-val-remote-url");
if (typeof remoteAttr === typeof undefined || remoteAttr === false) {
return true;
}
var isInvalid = true;
var data = {};
data[input.attr('name')] = input.val();
$.ajax({
url: remoteAttr,
mode: "abort",
port: "validate" + input.attr('name'),
dataType: "json",
type: input.attr("data-val-remote-type"),
data: data,
async: false,
success: function (response) {
isInvalid = response;
}
});
return !isInvalid;
}
},
messages: {
remote: function (input) {
return input.data('val-remote');
}
}
}); (function($, kendo) {
$.extend(true, kendo.ui.validator, {
rules: {
remote: function(input) {
var remoteAttr = input.attr("data-val-remote-url");
if (typeof remoteAttr === typeof undefined || remoteAttr === false) {
return true;
}
var isInvalid = true;
var data = {};
data[input.attr('name')] = input.val();
$.ajax({
url: remoteAttr,
mode: "abort",
port: "validate" + input.attr('name'),
dataType: "json",
type: input.attr("data-val-remote-type"),
data: data,
async: false,
success: function(response) {
isInvalid = response;
}
});
return !isInvalid;
}
},
messages: {
remote: function(input) {
return input.data('val-remote');
}
}
});
})(jQuery, kendo);