标签: unobtrusive-validation

使用jQuery Unobtrusive Validation禁用元素验证

通过某种表单生成器,在页面上呈现元素列表,并且它们都具有对它们的验证.当我查看HTML源代码时,我看到如下内容:

<input type="text" id="email" name="email" data-val-required="No valid email address!" data-val="true">
Run Code Online (Sandbox Code Playgroud)

我需要以某种方式动态地启用/禁用此类元素的验证.我尝试启用/禁用该data-val属性,方法是将其设置为false然后再返回true.但它似乎没有回应.验证总是在那里!

任何人都知道如何以动态方式启用/禁用某些字段的验证?

jquery unobtrusive-validation

12
推荐指数
2
解决办法
2万
查看次数

ASP.NET MVC 3不显眼的验证和单选按钮

我正在尝试对单选按钮列表进行必要的验证,以强制用户选择继续选项.验证确实有效,但它只在第一个单选按钮上输出元数据,它只标记带有输入验证错误类的第一个单选按钮.

例:

<p>@Html.RadioButtonFor(x => x.Choices, SomeEnum.OptionOne)</p>
<p>@Html.RadioButtonFor(x => x.Choices, SomeEnum.OptionTwo)</p>
Run Code Online (Sandbox Code Playgroud)

产生的HTML:

<p><input class="input-validation-error" data-val="true" data-val-required="required text" type="radio" name="Choices" value="OptionOne" /></p>
<p><input type="radio" name="Choices" value="OptionTwo" /></p>
Run Code Online (Sandbox Code Playgroud)

我希望两个单选按钮都能获得验证错误级别,否则可能会使用户选择的选项存在偏差.

我能做什么?

unobtrusive-validation asp.net-mvc-3

11
推荐指数
2
解决办法
2万
查看次数

如何在$ .ajax()之前或之前强制进行客户端验证

我有一个表单,并且启用了不显眼的验证.默认情况下,在提交方法中,客户端验证会被触发,并且(如果您有任何错误)表单如下所示:

在此输入图像描述

甚至在将任何数据发送到服务器之前就会进行验证.

现在,如果要使用$ .ajax方法,则此行为不起作用.客户端验证不起作用.您必须手动检查javascript中的所有字段,失去DataAnnotations的所有优点.

有没有更好的解决方案?我可以使用jquery的submit(),但我猜它没有像$ .ajax这样的回调.

validation jquery unobtrusive-validation asp.net-mvc-3

11
推荐指数
1
解决办法
1万
查看次数

使用不显眼的javascript/MVC3和DataAnnotations验证电子邮件地址

jQuery Validation使验证电子邮件地址变得简单:

$("someForm").validate({
    rules: {
        SomeField: {
            required: true,
            email: true,
            remote: {
                type: "POST",
                url: "CheckEmail"
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这使得SomeField成为必需,必须格式化为电子邮件地址,并且还执行对CheckEmail操作的远程调用(检查重复项).

我喜欢让事情变得尽可能简单,所以我可以用Data Annotations做很多相同的事情:

public class RegisterModel {
    [Required]
    [Remote("CheckEmail", "Home", HttpMethod="POST")]
    public string SomeField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ASP.net MVC 3/Data Annotations是否有内置/简单的方法来验证以确保电子邮件地址的格式正确?

如果可能的话,我希望它能产生不引人注目的javascript.

c# unobtrusive-javascript data-annotations unobtrusive-validation asp.net-mvc-3

11
推荐指数
3
解决办法
2万
查看次数

ASP.NET MVC实现自定义验证器使用IClientValidatable

在这里问类似的问题,但是在这个问题中我使用了另一个实现,正是这种方式下面的代码显示了我的实现:

模型:

public class Department {

    public long Id { get; set; }

    [IsDateAfter("Date2", true, ErrorMessage = "O My")]
    public DateTime Date1 { get; set; }
    public DateTime Date2 { get; set; }
    public string Name1 { get; set; }
    public string Name2 { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

自定义验证器:

public sealed class IsDateAfter : ValidationAttribute, IClientValidatable {

    private readonly string testedPropertyName;
    private readonly bool allowEqualDates;

    public IsDateAfter(string testedPropertyName, bool allowEqualDates = false)
  {
        this.testedPropertyName …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc razor unobtrusive-validation asp.net-mvc-3

11
推荐指数
1
解决办法
1万
查看次数

使用自定义KnockoutJS绑定绑定不显眼的验证

使用MVC 4和KnockoutJS.我可以使用自定义敲除绑定绑定不显眼的验证吗?我目前正在使用模板重新绑定验证afterRender.我很乐意让它自动添加绑定.像这样:

ko.bindingHandlers.egtZipRep = {
    init: function (element, valueAccessor, allBindingsAccessor, context) {
      $(element).inputmask("99999", { "placeholder": "?" });
      egtUniqueNameBinding(element, ++ko.bindingHandlers['uniqueName'].currentIndex);

      applyValidationRules(element); // Is it possible to do this here?

      ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, context);
    }
};
Run Code Online (Sandbox Code Playgroud)

我整天都在修整它.如果不是非常低效,我就做不到.

我目前这样做的方式如下.也许我应该对此感到高兴.但我猜之前有人试过这个.

self.ReferenceAfterRender = function (element) {
    bindUnobtrusiveValidation(element);
}

// Bind validation on new content
function bindUnobtrusiveValidation(element) {
   // Bind to fields - must be called everytime new field is created
   $.validator.unobtrusive.parseDynamicContent(element);
}

$.validator.unobtrusive.parseDynamicContent = function (selector) {
// Use the normal unobstrusive.parse method …
Run Code Online (Sandbox Code Playgroud)

jquery unobtrusive-validation asp.net-mvc-4 knockout.js

11
推荐指数
1
解决办法
3164
查看次数

数字范围验证在jquery.validate.unobtrusive.js中无法正常工作

我正在使用jQuery Validation Plugin,v1.11.0,2/4/2013和jquery.validate.unobtrusive.js.

我想我面临数字字段范围验证的错误:验证将字符串值与最小字符串和最大字符串进行比较,而不是将字段数与最小数字和最大数字进行比较.

摄制步骤:

您使用以下HTML设置验证范围1-1000:

<input name="Data.MaxConcurrentInstances" class="text-box single-line" id="Data_MaxConcurrentInstances" type="number" value="" data-val-number="The field Max concurrent instances must be a number." data-val="true" data-val-range-min="1" data-val-range-max="1000" data-val-range="The field Max concurrent instances must be between 1 and 1000.">
Run Code Online (Sandbox Code Playgroud)

您设置测试字段值:7.

预期结果:验证成功.没有错误.

实际结果:验证失败.内部原因:它失败,因为字母串字符串"7"在字符串"1"和"1000"之后,而不是在它们之间.

问题:这个错误是否已知?最好的解决方法是什么?

jquery unobtrusive-javascript jquery-validate unobtrusive-validation

11
推荐指数
1
解决办法
6488
查看次数

MVC4中不显眼的客户端验证无法正常工作

我有所有脚本的布局页面,如下所示.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Site</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <some custom css>
    <modernizr>
    <script src="~/Scripts/Jquery/jquery-1.9.1.js"></script>
    <script src="~/Scripts/Jquery/jquery-ui-1.10.2.js"></script>
    <script src="~/Scripts/Jquery/jquery.unobtrusive-ajax.js"></script>
    <script src="~/Scripts/Jquery/jquery.validate.js"></script>
    <script src="~/Scripts/Jquery/jquery.validate.unobtrusive.js"></script>
    <some custom scripts>
    <bootstrap scripts>
    <knockout scripts>           
</head>
<body>
  @RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后我有我的注册表格,如图所示

@model Mysite.Models.Account.Account
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
 @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "register" }))
{
 @Html.AntiForgeryToken();
 <h1>Login</h1>
 @Html.ValidationSummary();
 @Html.EditorFor(m => m.Name)
 @Html.EditorFor(m => m.Address1)
 @Html.EditorFor(m => m.Address2)
 @Html.EditorFor(m => m.Phone1)
<input type="button" …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery jquery-validate client-side-validation unobtrusive-validation

11
推荐指数
1
解决办法
4万
查看次数

如何在从AJAX调用中附加表单时正确设置MVC 5不显眼的验证?

我有关于这个问题的googeld,我检查了我的web.config,bundleconfig和我的布局,如下所示:web.config:

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

在"BundleConfig.cs"下的App_Start文件夹中:

        var jqueryBundle = new ScriptBundle("~/bundles/jquery");
        jqueryBundle.Include("~/Scripts/jquery-{version}.js");
        jqueryBundle.Include("~/Scripts/moment.min.js");
        jqueryBundle.Include("~/Scripts/loadingoverlay.js");
        jqueryBundle.Include("~/Scripts/fullcalendar.js");
        jqueryBundle.Include("~/Scripts/lang-all.js");
        jqueryBundle.Transforms.Add(jsTransformer);
        jqueryBundle.Orderer = nullOrderer;
        bundles.Add(jqueryBundle);
Run Code Online (Sandbox Code Playgroud)

var jqueryvalBundle = new ScriptBundle("〜/ bundles/jqueryval"); jqueryvalBundle.Include( "〜/脚本/ jquery.validate*"); jqueryvalBundle.Include( "〜/脚本/ jquery.validate.js"); jqueryvalBundle.Include( "〜/脚本/ jquery.validate.unobtrusive.js"); jqueryvalBundle.Transforms.Add(jsTransformer); jqueryvalBundle.Orderer = nullOrderer; bundles.Add(jqueryvalBundle);

在我的布局页面中:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
Run Code Online (Sandbox Code Playgroud)

萤火虫表明:

在此输入图像描述

到目前为止,一切都包括在内,并且应该顺利运行.

我的模特:

   [DisplayName("Förnamn")]
    [Required(ErrorMessage = "Vänligen ange ett förnamn")]
    [StringLength(100)]
    public string FirstName { get; set; }
    [DisplayName("Efternamn")]
    [Required(ErrorMessage = …
Run Code Online (Sandbox Code Playgroud)

jquery unobtrusive-validation asp.net-mvc-5

11
推荐指数
1
解决办法
2万
查看次数

客户端表单验证不适用于MVC中的模态对话框

我正在更改创建表单以成为模式对话框和jquery Unobtrusive验证停止工作,不知道如何解决它.

Index.cshtml有一个触发模式对话框的链接.

<a href="#" id="createCustomer">Create</a>
@section scripts{
<script type="text/javascript">
$('#createCustomer').on('click', function () {
        $.get('/Customer/Create', function (data) {
            $('#modalContainer').html(data);
            $('#myModal').modal({});
        });
    });
Run Code Online (Sandbox Code Playgroud)

Create.cshtml是局部视图.

@model Demo.Web.Models.CustomerVm
@using (Html.BeginForm("Create", "Customer", FormMethod.Post, new { @id="createForm" }))
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Customer</h4>
        <hr />
        @Html.ValidationSummary(true)

        <div class="form-group">
            @Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

@section Scripts …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc data-annotations unobtrusive-validation asp.net-mvc-viewmodel

10
推荐指数
2
解决办法
2万
查看次数