Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将显示FluentValidation消息,但表单仍会提交_Asp.net Mvc_Asp.net Mvc 4_Fluentvalidation - Fatal编程技术网

Asp.net mvc 将显示FluentValidation消息,但表单仍会提交

Asp.net mvc 将显示FluentValidation消息,但表单仍会提交,asp.net-mvc,asp.net-mvc-4,fluentvalidation,Asp.net Mvc,Asp.net Mvc 4,Fluentvalidation,使用MVC4和FluentValidation。我有一个字段,上面有两条规则。NotEmpty规则按预期工作。Matches规则似乎启动了,但是表单还是提交了,即使验证消息弹出,就好像验证失败一样 我有以下视图模型和验证器: public class ImpactedEntityViewModelValidator : AbstractValidator<ImpactedEntityViewModel> { public ImpactedEntityViewModelVali

使用MVC4和FluentValidation。我有一个字段,上面有两条规则。NotEmpty规则按预期工作。Matches规则似乎启动了,但是表单还是提交了,即使验证消息弹出,就好像验证失败一样

我有以下视图模型和验证器:

public class ImpactedEntityViewModelValidator : AbstractValidator<ImpactedEntityViewModel>
{
    public ImpactedEntityViewModelValidator()
    {
        RuleFor(x => x.ImpactedEntityDescription)
            .Matches("[a-zA-Z0-9/ ]{1,}").WithMessage("Description can only contain letters, numbers, '/', and spaces.")
            .NotEmpty().WithMessage("Description is required.");
    }
}

[Validator(typeof(ImpactedEntityViewModelValidator))]
public class ImpactedEntityViewModel
{
    public int? ImpactedEntityLUID { get; set; }

    [Display(Name = "Impacted Entity Description")]
    public string ImpactedEntityDescription { get; set; }

    public bool? Deleted { get; set; }
}
我不确定这怎么可能。如预期的那样,如果字段为空,则不会提交。例如,如果我输入“%”,匹配规则的消息将弹出,但随后它将立即提交并写入记录。是不是我遗漏了什么东西导致了这一切

多谢各位

根据迈克尔·克鲁克的回答:

这解决了问题:

$("form").submit(function () {
    var form = $(this);
    if (form.valid()) {
        // do valid stuff
    }
    else {
        return false;
    }
});
根据LeftyX的回答:

检查了我的Nuget包,jQuery有一个可用的更新。将其更新为2.1.4修复了该问题,我不需要在提交时进行额外检查


谢谢大家。

您可能会发现FluentValidation(我只用于服务器端验证,而不是客户端验证)没有禁用发布的功能。您可以尝试使用jquery搜索表单中的验证错误类,然后自己禁用该按钮。

您可能会发现FluentValidation(我只用于服务器端验证,而不是客户端验证)无法禁用发布。您可以尝试使用jquery搜索表单中的验证错误类,然后自己禁用该按钮。

您可能会发现FluentValidation(我只用于服务器端验证,而不是客户端验证)无法禁用发布。您可以尝试使用jquery搜索表单中的验证错误类,然后自己禁用该按钮。

您可能会发现FluentValidation(我只用于服务器端验证,而不是客户端验证)无法禁用发布。您可以尝试使用jquery搜索表单中的验证错误类,然后自己禁用该按钮。

您实际上不必自己进行验证检查:

$("form").submit(function () {
    var form = $(this);
    if (form.valid()) {
        // do valid stuff
    }
    else {
        return false;
    }
});
我是说,你可以,但你可能已经准备好了你需要的一切

如果签入脚本文件夹,则应具有:

jquery.validate.js
jquery.validate.unobtrusive.js

而且您已经绑定了客户端验证所需的脚本:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",
    "~/Scripts/jquery.validate*"));
默认模板不会自动将引用添加到捆绑包中,但您可以添加它,只需添加:

@Scripts.Render("~/bundles/jqueryval")  
到您的
\u Layout.cshtml
或任何需要客户端验证的地方

如果检查表单的html,您将看到您的输入:

<input name="ImpactedEntityDescription" class="text-box single-line" id="ImpactedEntityDescription" type="text" value="" data-val="true" data-val-required="Description is required." data-val-regex-pattern="[a-zA-Z0-9/ ]{1,}" data-val-regex="Description can only contain letters, numbers, '/', and spaces.">
jquery.validate.js在为您进行sumitt之前检查表单(第404行):


检查您的nuget软件包是否已更新

您实际上不必亲自进行验证检查:

$("form").submit(function () {
    var form = $(this);
    if (form.valid()) {
        // do valid stuff
    }
    else {
        return false;
    }
});
我是说,你可以,但你可能已经准备好了你需要的一切

如果签入脚本文件夹,则应具有:

jquery.validate.js
jquery.validate.unobtrusive.js

而且您已经绑定了客户端验证所需的脚本:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",
    "~/Scripts/jquery.validate*"));
默认模板不会自动将引用添加到捆绑包中,但您可以添加它,只需添加:

@Scripts.Render("~/bundles/jqueryval")  
到您的
\u Layout.cshtml
或任何需要客户端验证的地方

如果检查表单的html,您将看到您的输入:

<input name="ImpactedEntityDescription" class="text-box single-line" id="ImpactedEntityDescription" type="text" value="" data-val="true" data-val-required="Description is required." data-val-regex-pattern="[a-zA-Z0-9/ ]{1,}" data-val-regex="Description can only contain letters, numbers, '/', and spaces.">
jquery.validate.js在为您进行sumitt之前检查表单(第404行):


检查您的nuget软件包是否已更新

您实际上不必亲自进行验证检查:

$("form").submit(function () {
    var form = $(this);
    if (form.valid()) {
        // do valid stuff
    }
    else {
        return false;
    }
});
我是说,你可以,但你可能已经准备好了你需要的一切

如果签入脚本文件夹,则应具有:

jquery.validate.js
jquery.validate.unobtrusive.js

而且您已经绑定了客户端验证所需的脚本:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",
    "~/Scripts/jquery.validate*"));
默认模板不会自动将引用添加到捆绑包中,但您可以添加它,只需添加:

@Scripts.Render("~/bundles/jqueryval")  
到您的
\u Layout.cshtml
或任何需要客户端验证的地方

如果检查表单的html,您将看到您的输入:

<input name="ImpactedEntityDescription" class="text-box single-line" id="ImpactedEntityDescription" type="text" value="" data-val="true" data-val-required="Description is required." data-val-regex-pattern="[a-zA-Z0-9/ ]{1,}" data-val-regex="Description can only contain letters, numbers, '/', and spaces.">
jquery.validate.js在为您进行sumitt之前检查表单(第404行):


检查您的nuget软件包是否已更新

您实际上不必亲自进行验证检查:

$("form").submit(function () {
    var form = $(this);
    if (form.valid()) {
        // do valid stuff
    }
    else {
        return false;
    }
});
我是说,你可以,但你可能已经准备好了你需要的一切

如果签入脚本文件夹,则应具有:

jquery.validate.js
jquery.validate.unobtrusive.js

而且您已经绑定了客户端验证所需的脚本:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",
    "~/Scripts/jquery.validate*"));
默认模板不会自动将引用添加到捆绑包中,但您可以添加它,只需添加:

@Scripts.Render("~/bundles/jqueryval")  
到您的
\u Layout.cshtml
或任何需要客户端验证的地方

如果检查表单的html,您将看到您的输入:

<input name="ImpactedEntityDescription" class="text-box single-line" id="ImpactedEntityDescription" type="text" value="" data-val="true" data-val-required="Description is required." data-val-regex-pattern="[a-zA-Z0-9/ ]{1,}" data-val-regex="Description can only contain letters, numbers, '/', and spaces.">
jquery.validate.js在为您进行sumitt之前检查表单(第404行):


检查您的nuget软件包是否已更新

除了上面提到的可能原因外,您视图中的这一行还可以在用户点击您的提交按钮时立即提交表单,即使表单仍然无效:

HtmlHelper.ClientValidationEnabled = false;

除了上面提到的可能原因外,视图中的这一行还可以在用户点击提交按钮时立即提交表单,即使表单仍然无效:

HtmlHelper.ClientValidationEnabled = false;

除了上面提到的可能原因外,视图中的这一行还可以在用户点击提交按钮时立即提交表单,即使表单仍然无效:

HtmlHelper.ClientValidationEnabled = false;

除了上面提到的可能原因外,视图中的这一行还可以在用户点击提交按钮时立即提交表单,即使表单仍然无效:

HtmlHelper.ClientValidationEnabled = false;

没错,这可能是一个简单的解决办法。谢谢但这很奇怪,我从来没有