【问题标题】:ASP.NET MVC: Foolproof Validation not workingASP.NET MVC:万无一失的验证不起作用
【发布时间】:2023-04-06 13:32:01
【问题描述】:

在这个thread 中,我得到了使用 FoolProof 来解决我的问题的建议。这就是我现在正在尝试做的事情。但是,我找不到 Foolproof 在我的项目中不起作用的原因。因此,我将为您提供视图以及我如何将 Foolproof 包含在其中,模型以及我如何将 Foolproof 作为捆绑包添加,所以也许你们中的某个人看到了我的错误。

查看:

 @section Scripts {
         @Scripts.Render("~/bundles/jqueryval")
         @Scripts.Render("~/bundles/mvcfoolproof")
            }

捆绑配置:

public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/datatables").Include(
                        "~/Scripts/DataTables/jquery.dataTables.js"));

            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js",
                      "~/Scripts/respond.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/site.css",
                      "~/Content/jquery-ui.css",
                      "~/Content/dataTables.css"));

            bundles.Add(new ScriptBundle("~/bundles/mvcfoolproof").Include(
                    "~/Scripts/MicrosoftAjax.js",
                    "~/Scripts/MicrosoftMvcAjax.js",
                    "~/Scripts/MicrosoftMvcValidation.js",
                    "~/Scripts/MvcFoolproofJQueryValidation.min.js",
                    "~/Scripts/MvcFoolproofValidation.min.js",
                    "~/Scripts/mvcfoolproof.unobtrusive.min.js"));

        }

型号:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using Foolproof;

public int CustomerID {get; set;}
public bool ValRequired {get; set;}
[RequiredIfTrue("ValRequired")]
public string NameofCustomer { get; set; }

所以,问题是,如果我这样申请,应用程序运行时没有错误,但此时没有验证跳转,所以我会感谢任何形式的帮助! :)

【问题讨论】:

  • 请贴出控制器代码。
  • 它只是<script src="~/Scripts/mvcfoolproof.unobtrusive.min.js"></script> - 删除你的所有其他mvcfoolproof bundle
  • 您好,感谢您的快速回复。你的意思是,它必须看起来像这样: bundles.Add(new ScriptBundle("~/bundles/mvcfoolproof").Include("~/Client Scripts/mvcfoolproof.unobtrusive.min")); ?
  • 是的,这就是您所需要的 - 其他文件现在已经过时或不适用于 MVC,包含它们会导致冲突
  • 我更新了上面的代码,我按照你之前说的做了,但是没有验证跳转,如果我将它设置为 [Required],它可以工作。我还能做错什么?

标签: c# asp.net-mvc foolproof-validation


【解决方案1】:

在 BundleConfig 中,将您添加的最后一个包替换为

bundles.Add(new ScriptBundle("~/bundles/mvcfoolproof").Include(
            "~/Client Scripts/mvcfoolproof.unobtrusive.js",
            "~/Client Scripts/mvcfoolproof.unobtrusive.min.js",
            "~/Client Scripts/MvcFoolproofJQueryValidation.js",
            "~/Client Scripts/MvcFoolproofJQueryValidation.min.js",
            "~/Client Scripts/MvcFoolproofValidation.js",
            "~/Client Scripts/MvcFoolproofValidation.min.js"));

当您安装 Foolproof 包时,js 文件位于 Client Scripts 文件夹中,而不是 Scripts 文件夹中。

【讨论】:

  • 值得注意的是,如果您包含所有文件,您将包含它们的完整版本和缩小版本。这将导致重复的代码和更大的捆绑包。您应该只包含所有 .min.js 文件,或者不包含的文件。
  • 您也只需要一个文件。如果您不使用 jQuery,请使用 MvcFoolproofValidation.*;如果您使用 jQuery 但不是不显眼的验证,请使用 MvcFoolproofJQueryValidation.*;如果您使用不显眼的验证(它本身需要 jQuery),请使用 mvcfoolproof.unobtrusive.*(* 通配符选择器包括缩小和未缩小的文件,但捆绑器足够聪明,可以根据您的构建配置是否包含其中一个或另一个调试或发布)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
相关资源
最近更新 更多