标签: unobtrusive-validation

在ASP.NET MVC 3中使用不显眼的验证,如何在表单无效时采取措施?

我有一个页面上有jQuery UI标签,第一个标签上有一个必填字段.验证有效,如果用户未输入值,则验证消息将显示在字段旁边.但是,如果用户不在第一个选项卡上,则该字段无效是不明显的.

在这种情况下,我想显示第一个选项卡,但是我不知道如何为'无效'事件注册回调,如果有的话.

我还考虑在选项卡上方显示验证摘要,无论用户在哪个选项卡上都可以看到,但我的偏好是将用户带到该字段.

我试过查看jquery.validate.unobtrusive.js文件,它似乎扩展了jquery.validate.js.查看jquery.validate的文档,我看到有一个invalidHandler选项可以传递给validate方法,但我不知道如何使用它,因为该方法由jquery.validation.unobtrusive调用.

我在这里感觉有点失落,所以任何帮助都将不胜感激!

编辑

我从来没有想出答案,但确实想出了一个解决方法,我在下面发布了.不过,我希望有人以更好的方式回答这个问题.

validation jquery-validate jquery-ui-tabs unobtrusive-validation asp.net-mvc-3

6
推荐指数
1
解决办法
3804
查看次数

禁用为特定提交按钮启用不显眼的验证

我有两个提交按钮返回,继续.单击"返回"时,如何禁用客户端验证.我试图将取消类添加到按钮属性,但它接缝没有帮助.

UPD.实际上这是取消课程.但是如果你动态添加它(通过javascript),它接缝不起作用.

asp.net-mvc submit button unobtrusive-validation

6
推荐指数
2
解决办法
6971
查看次数

asp.net mvc TextAreaFor未被验证为必填字段

我有一个数据录入字段,我正在收集笔记.每个音符都需要音符数据元素.这是我的模特:

public interface INoteDataEntryViewModel : IMobilePageDataContract
{
    int CourseId { get; set; }

    [Required(ErrorMessage = @"Note is required")]
    String Note { get; set; }

    [DisplayName(@"Note Date")]
    DateTime NoteDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您可以看到我有Note属性的Required属性.

我正在使用Razor来显示数据输入表单元素:

<div data-role="fieldcontain">
    @Html.LabelFor(m => m.Note)
    @Html.TextAreaFor(m => m.Note)
    @Html.ValidationMessageFor(m => m.Note)
</div>
Run Code Online (Sandbox Code Playgroud)

当我使用"@ Html.TextAreaFor"时,没有对必填字段进行验证,我可以提交表格.但是,如果我更改为"@ Html.TextBoxFor",则会对必填字段进行验证,但我无法提交表单.关于TextAreaFor验证失败原因的任何想法?我正在使用不引人注目的ajax并且是jQueryMobile.

谢谢你的帮助.

razor jquery-mobile unobtrusive-validation

6
推荐指数
1
解决办法
4341
查看次数

任何人都知道任何与MVC Unobtrusive Validation一起使用的jQuery Mask插件吗?

我一直在ASP.Net应用程序中使用以下掩码输入插件:

http://digitalbush.com/projects/masked-input-plugin/

不幸的是,这不适合MVC不显眼的验证.验证会在每个令人讨厌的密钥上触发.另外,当输入失去焦点时,regex属性总是失败,因为它在掩码控件清除之前将掩码读取为实际用户输入.

有人遇到过蒙面文本框解决方案,可以很好地运行MVC验证吗?

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

6
推荐指数
1
解决办法
903
查看次数

什么是在asp.net MVC 3中触发Unobtrusive Validation检查

我试图找出asp.net mvc 3中不显眼的验证是如何工作的.

我想知道当我点击提交表单时触发验证检查的是什么.如何将脚本jquery.validate.unobtrusive.js绑定到表单提交事件?

我也想知道如何手动阻止/触发此检查.

unobtrusive-validation asp.net-mvc-3

6
推荐指数
1
解决办法
3320
查看次数

en-GB日期的不引人注目的验证

我正在使用asp.net MVC4设计一个数据输入表单,它有一个类型为date的输入.

在chrome和jQueryUI datepicker中使用不显眼的jQuery库我仍然收到错误(字段news_date必须是日期.),在选择正确的日期格式后,使用datepicker(即14/02/2013)并提交表单.

一些搜索建议我应该使用jQuery.globilization库.因此,在阅读文档后,我添加了对以下脚本的引用.

$(document).ready(function () {
    $.culture = Globalize.culture("en-GB");
    $.validator.methods.date = function (value, element) {
        return this.optional(element) || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB");
    }
});
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到错误

如果我在chrome中调试上面的代码我可以看到"value"的值是"2014-02-14".

下面是html,它被渲染.

<div class="editor-field">

<input class="text-box single-line datepicker hasDatepicker input-validation-error" data-val="true" data-val-date="The field news_date must be a date." id="news_date" name="news_date" type="date" value="">
<script type="text/javascript">
    $(function () {
        $(".datepicker").datepicker({ dateFormat: "dd/MM/yyyy" });
    });
    </script>
            <span class="field-validation-error" data-valmsg-for="news_date" data-valmsg-replace="true"><span for="news_date" class="" style="">The field news_date must be a date.</span></span>
        </div>
Run Code Online (Sandbox Code Playgroud)

更新:顺便提一下,如果我将验证方法更改为硬编码.即

$.validator.methods.date …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery unobtrusive-validation jquery-globalization asp.net-mvc-4

6
推荐指数
1
解决办法
8298
查看次数

部分视图 - 客户端验证不适用于jquery ajax帖子

在索引页面中,我显示了员工列表,当用户单击编辑链接时,我显示了编辑视图.

此编辑视图呈现部分视图(_EditPartial)以显示可编辑的不同字段.

当用户单击"保存"按钮时,我想进行Ajax调用.

我想在将数据发布到服务器之前验证输入.我尝试使用不引人注目的验证,但验证根本不会触发我.以下是代码段.

在web.config中启用ClientValidationEnabled和UnobtrusiveJavaScriptEnabled.

代码段

部分视图代码

        @model WebApplication1.Models.employee

        <div id="mypartial" class="form-horizontal">
            <h4>employee</h4>
            <hr />
            @Html.ValidationSummary(true)
            @Html.HiddenFor(model => model.id)

            <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">
                @Html.LabelFor(model => model.age, new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.age)
                    @Html.ValidationMessageFor(model => model.age)
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.address, new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.address) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery razor unobtrusive-validation asp.net-mvc-4

6
推荐指数
1
解决办法
5075
查看次数

jQuery自定义属性的不显眼的客户端验证

我已经创建了一个自定义验证属性,它在服务器端工作(在发布表单之后),但我无法让验证工作在客户端.

自定义属性是:

public class ReasonableAttribute : ValidationAttribute, IClientValidatable
{
    public override bool IsValid(object value)
    {
        return Approval.IsNumberReasonable(value.ToString());
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
        rule.ValidationType = "reasonable";
        yield return rule;
    }

}
Run Code Online (Sandbox Code Playgroud)

IsNumberReasonable()功能少了点上的字段输入一些检查,使他们进入知道什么可以合理是一个批准文号(如不为空,或"未知"或类似的东西)返回bool true/false.

我的模型然后包含:

[Display(Name = "Approval Number"]
[Reasonable(ErrorMessage = "Please enter a reasonable {0}")]
public String ApprovalNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)

并且视图包含:

@Html.LabelFor(model => model.ApprovalNumber, new { @class = "control-label col-md-3" })
<div class="col-md-9 append …
Run Code Online (Sandbox Code Playgroud)

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

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

使用jQuery Validation Unobtrusive时描述的aria的多个值

我使用最新版本的jQuery Validation Unobtrusive结合最新版本的jQuery Validate.验证本身就像一个魅力.但是,如果该字段无效,则会将值添加到该aria-describedby属性中.

假设我想输入我的密码(验证密码的长度必须大于6).最初的HTML看起来像这样:

<input data-val="true" data-val-minlength="The field Passwort must be a string or array type with      a minimum length of '6'." 
   data-val-minlength-min="6" data-val-required="The Passwort field is required." 
   id="Password" name="Password" tabindex="2" 
type="password">
Run Code Online (Sandbox Code Playgroud)

我开始输入一个只有5个字符的密码,然后input通过单击某处的某处删除焦点body.验证将贯穿,aria-describedby并将添加一系列属性和值.现在该aria-describedby属性只有一个值Password-error.如果我再次聚焦输入字段并删除所有字符,甚至按下退格键,则会在每个键盘上添加一个新值.这导致以下结果:

<input data-val="true" 
   data-val-minlength="The field Passwort must be a string or array type with a minimum length of '6'." 
   data-val-minlength-min="6" 
   data-val-required="The Passwort field is required." 
   id="Password" name="Password" tabindex="2" type="password" aria-required="true" 
   aria-invalid="true" class="input-validation-error" 
   aria-describedby="Password-error Password-error Password-error …
Run Code Online (Sandbox Code Playgroud)

javascript jquery unobtrusive-validation

6
推荐指数
1
解决办法
1679
查看次数

MVC中的流畅验证:为客户端验证指定RuleSet

在我的ASP.NET MVC 4项目中,我有一个我的视图模型的验证器,它包含RuleSets的规则定义.Edit当所有客户端验证通过时,在Post操作中使用的规则集.UrlEmail规则集规则集中使用的Edit规则(您可以在下面看到)和特殊的ajax操作,它们仅相应地验证电子邮件和仅验证Url.

我的问题是视图不知道它应该使用Edit规则集来生成客户端html属性,并使用default规则集,它是空的.如何判断视图使用Edit规则集进行输入属性生成?

模型:

public class ShopInfoViewModel
{
    public long ShopId { get; set; }

    public string Name { get; set; }

    public string Url { get; set; }

    public string Description { get; set; }

    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

验证器:

public class ShopInfoViewModelValidator : AbstractValidator<ShopInfoViewModel>
{
    public ShopInfoViewModelValidator()
    {
        var shopManagementService = ServiceLocator.Instance.GetService<IShopService>();

        RuleSet("Edit", () =>
        {
            RuleFor(x => …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc fluentvalidation unobtrusive-validation asp.net-mvc-4

6
推荐指数
1
解决办法
3293
查看次数