【问题标题】:ASP.Net Core: Unobtrusive validation not workingASP.Net Core:不显眼的验证不起作用
【发布时间】:2017-01-05 23:06:57
【问题描述】:

ASP.Net Core(与 ASP.Net MVC 5 不同)中的客户端验证不起作用。我有以下代码:

public class CountryModel{
    [Required]
    public String Title {get; set;}
}

在我的视图页面中

using(Html.BeginForm()){
   @Html.LabelFor(x=> x.Title)
   @Html.ValidationMessageFor(x=> x.Title)
   @Html.EditorFor(x=> x.Title)
   <Button>Add</Button>
}

在页面末尾添加了以下脚本:

...
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>  
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

但它失败了。我已经通过在浏览器中查看源代码来检查脚本,并且脚本已正确加载。我已将断点指向我的 Action API 以进行仔细检查,每次按下添加按钮时,我都会到达断点,这意味着客户端验证失败。

在 ASP.Net Core 中是否有任何额外的配置?因为这种方法在 MVC 5 中运行良好。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-core-mvc asp.net-core-1.0


    【解决方案1】:

    请确保您的验证相关脚本放置在您正在使用的环境中。开发或生产。

    我苦苦挣扎了一段时间,当我检查我的脚本时,它被放置在开发部分,我的应用正在使用生产环境运行。

    一旦我将脚本投入生产,它就开始工作了!

    【讨论】:

      【解决方案2】:

      在我的情况下,问题完全不同。

      验证脚本引用位于 default/built in _ValidationScriptsPartial.cshtml 中,我刚刚通过添加添加到我的页面中

      @section Scripts 
      {
           <partial name="_ValidationScriptsPartial"/>    
      }
      

      在我的视图 cshtml 的末尾。

      我可以看到 它在开发者工具中被正确引用,所以我认为这一切都很好:

      然而,事实证明_ValidationScriptsPartial 中的路径不正确! 如您所见,只有缩小版可用...在第二个的情况下,缺少dist 子文件夹。

      这很令人惊讶,因为这是一个我没有接触过的样板代码。

      【讨论】:

        【解决方案3】:

        在我的情况下,我忘记下载 Jquery,请注意让 jquery 验证工作,确保您在 wwwroot 文件夹中以相同的顺序安装了以下所有脚本..

        wwwroot 文件夹

        _Layout 文件中脚本的顺序

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-23
          • 1970-01-01
          • 2018-11-06
          • 2012-11-16
          • 1970-01-01
          • 2020-12-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多