MVC5 - 数据注释 - 客户端验证没有发生?

2024-01-12

我有一个 MVC 5 应用程序,我使用数据注释来进行大部分验证。我的班级中的属性之一如下所示:

[Required(ErrorMessage = "Please enter a business name")]
[StringLength(80)]
public string BusinessName { get; set; }

验证正在工作,但它似乎没有像我想象的那样在浏览器中发生。在我的页面上有一个“保存”按钮。如果我将“业务名称”字段留空并单击“保存”,则会向控制器方法发送帖子,该方法部分如下所示:

    [HttpPost]
    public ActionResult Create(Advertiser advertiser, FormCollection collection, HttpPostedFileBase file)
    {
        // Before we do anything, let's check to make sure any validation that's already been done is clean.
        if (!ModelState.IsValid)
        {
            return View(advertiser);
        }
   ...
   ...
}

当执行该方法时,模型状态已设置为无效。这很好,因为它无效,因为“公司名称”字段为空。但是,这种验证不应该在客户端进行吗?

我的 .cshtml 文件中的字段如下所示(使用 Bootstrap):

<div class="form-group">
    @Html.Label("Business Name", new { @class = "control-label col-md-3" })
    <div class="col-md-9">
        @Html.TextBoxFor(model => model.BusinessName, new { @class = "form-control", title = "", autofocus = true })
        @Html.ValidationMessageFor(model => model.BusinessName)
    </div>
</div>

我的 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>

我发现了我的问题。在我的 BundleConfig.cs 中,我有以下内容:

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

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

但是,我没有意识到 jqueryval 包默认情况下不会加载到 _Layout.cshtml 文件中。所以我需要添加它,如下:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)

一旦我这样做了,它就按预期工作了。当然,这将导致所有页面加载它。这可能并不理想。如果没有,请根据需要在每个页面中单独加载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC5 - 数据注释 - 客户端验证没有发生? 的相关文章

随机推荐

  • Firebase 本地通知

    当 Firebase 回调时是否有可能触发本地通知 我猜我的线程有问题 Firebase setDispatchQueue dispatch get global queue DISPATCH QUEUE PRIORITY DEFAULT
  • 持久化 sha256 哈希对象?

    我需要一个 Python C C Java 实现 它可以暂停散列进度 and store文件的进度以这样的方式进行 可恢复的稍后从该文件中获取 无论上面列出的语言是用什么语言编写的 它都应该在 Python 中正常工作 建议您提供它以便与
  • 如何在 Flash 应用程序中创建退出按钮

    我正在创建一个 Flash 应用程序 该应用程序将导出到exe格式 它不会在浏览器中运行 我想在舞台内添加一个退出按钮 但我不知道如何使用 ActionScript 3 来做到这一点 我记得这是可能的fscommand在 ActionScr
  • Chef 中的动态角色属性

    我想要厨师食谱network interfaces为我的每个节点提供 IP 地址 网络掩码等的动态值 对我有用的是以下内容 db role rb 块1 override attributes network interfaces gt de
  • XBMC/KODI 添加插件时出错“结构不正确”

    我正在关注 KODI XBMC hello world 插件教程here http kodi wiki view HOW TO HelloWorld addon我从下载了完成的项目here https github com zag2me p
  • 实际 javascript 练习的资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 python 中精确复制 R 文本预处理

    我想使用 Python 预处理文档语料库 就像在 R 中一样 例如 给定一个初始语料库 corpus 我希望最终得到一个与使用以下 R 代码生成的语料库相对应的预处理语料库 library tm library SnowballC corp
  • 图像加载不适用于 IE 8 或更低版本

    我的目的是检查图像是否已成功加载 它在现代浏览器中运行良好 但在 IE8 或 7 中这是一个可怕的问题 这是示例代码 var img new Image url http something com images something gif
  • 按名称获取角色(discord.py 重写)

    我的 Discord 机器人有问题 我想创建一个具有支持者角色读取权限的文本通道 但我不想使用role id 因此 我尝试使用以下代码 但无法创建任何频道 supporter role discord utils get Supporter
  • 有没有办法观察 i18n 当前语言环境的变化?

    使用 i18n 时 当语言 区域设置发生变化时 如何调用函数 我应该使用 Vuex 还是vue i18n https kazupon github io vue i18n 有一种方法可以让我这样做吗 你可以看 i18n locale对于任何
  • Google Chrome:垂直滚动条在某些网页上消失,可能是由于奇怪的工具栏

    我的一位客户在查看我们网站上的某些页面时遇到问题 具体来说 它是垂直滚动条 在某些页面上消失 她使用的是 Google Chrome 正如下面的截图所示 Chrome 还有一个奇怪的工具栏 在第一张图片上 滚动没有问题 http i45 t
  • 仅显示上周创建的帖子

    我希望能够显示帖子并按几个标准对它们进行排序 首先是它们的投票数量 其次是它们的创建日期 我不希望显示一周以上的帖子 因此只显示上周的帖子 我尝试这样做 但它给了我一个 NilClass 与 2 比较失败的错误 我知道代码的工作原理只是按投
  • Gtk.CssProvider() 基于 ID 的选择器在 Gtk3 中如何工作?

    我已经断断续续地摆弄这个问题好几天了 但似乎无法解决可能出现的问题 本质上 我正在尝试使用 CSS 样式声明在 Gtk3 中设置一些 Gtk Widget 的样式 没有什么复杂的 只是尝试通过其 id 名称来定位特定元素 Gtk CssPr
  • 确定运行时 JVM 可执行文件的位置

    如何在运行时获取当前运行的 JVM 的可执行文件的位置 我想使用 ProcessBuilder 类将另一个 JVM 实例化为子进程 我知道有java home系统属性 但这并不指定 JVM 可执行文件的位置 我知道我可以做这样的事情来获取路
  • 如何让异步流返回两个数据源

    我有以下函数 它返回标准输出数据 作为异步流 该数据是由运行System Diagnostics Process 当前该方法中的所有内容都按预期工作 我可以用await foreach 循环 我得到由外部 exe 生成的每一行输出 priv
  • 不同组件中的垫菜单和按钮

    I have
  • 在 PL/SQL 中使用带有“LIKE %”的变量(例如“variable%”)?

    问题类似于使用LIKE in SQL PLUS 其中 select 语句包含LIKE条款如下 select from sometable where somecolumn LIKE something 如何在游标中使用相同的内容 我尝试使用
  • scipy.io.wavfile.read 返回的数据是什么意思?

    的文档scipy io wavfile read说它返回采样率和数据 但在这种情况下 数据实际上意味着什么 wav files 谁能用通俗的语言告诉我这些数据是如何准备的 附言 我在某处读到这意味着振幅 我读到的内容正确吗 如果是 那么该幅
  • Android Studio - 1.5.11 之前的 IBus 可能会导致输入问题。有关详细信息,请参阅 IDEA-78860 [重复]

    这个问题在这里已经有答案了 Android Studio 1 5 Build AI 141 2422023 built on November 12 2015 我刚刚更新了我的Android Studio on Ubuntu 15 10当它
  • MVC5 - 数据注释 - 客户端验证没有发生?

    我有一个 MVC 5 应用程序 我使用数据注释来进行大部分验证 我的班级中的属性之一如下所示 Required ErrorMessage Please enter a business name StringLength 80 public