【问题标题】:jQuery Unobtrusive Validation not working on html table - codepenjQuery Unobtrusive Validation 不适用于 html 表 - codepen
【发布时间】:2020-11-18 04:31:04
【问题描述】:

在此处查看我的代码笔: https://codepen.io/jquerypain121/pen/rNxgJgV

我正在尝试让表格中的字段在提交表单时也得到验证。

这只是我的 C# MVC 应用程序的快照。表中的字段是在我的视图中生成的,代码如下:

                <td>
                    @Html.DropDownListFor(m => m.Patient.Right["Sph"], Model.Patient.Sph_Dropdownnlist, "Select", new { @class = "form-control list-question-select" })                                               
                </td>

即来自Dictionary&lt;string,string&gt; 属性

我必须修改什么才能让 jQuery 验证我的表格字段? 谢谢

编辑 - 我的 ViewModel 代码:

 public class Patient
    {
     
        [DisplayName("First Name")]
        [Required]
        public string Pt_FirstName { get; set; }          

    
        [DisplayName("Postcode")]
        [Required]
        public string Pt_Postcode { get; set; }    

        [Required]
        public Dictionary<string, string> pt_EyeDetailsRight { get; set; }
        [Required]
        public Dictionary<string, string> pt_EyeDetailsLeft { get; set; }


    }

在我的控制器中的 Get Action 方法中,这些 Dictionary 属性被分配了如下键:

 model.Patient.pt_EyeDetailsLeft = new Dictionary<string, string>
                    {
                        { "VA", "" },
                        { "Sph", "" },
                    };
            model.Patient.pt_EyeDetailsRight = new Dictionary<string, string>
                    {
                        { "VA", "" },
                        { "Sph", "" },
                    };

然后将其发送到视图,该视图像我的 codepen 一样呈现为 Html。

【问题讨论】:

  • 显示你的视图模型类。您是否在那边对下拉属性进行了验证?
  • 添加了视图模型代码。我没有对那里的属性进行任何验证,我想我过去曾尝试过 [Required] 但没有效果。
  • 您是否从 Jquery 添加了“不显眼的验证引用”?
  • 在我的 _Layout.cshtml 中是的。代码笔是我的 View 的简化版,Unobtrusive 验证也不适用于表格字段。
  • 尝试将不显眼的参考移到您的视图页面的顶部。还可以使用 mvc 助手,例如 @Html.DropDownListFor@Html.ValidationMessageFor 等。

标签: javascript jquery asp.net-mvc unobtrusive-validation


【解决方案1】:

解决了。

问题是我的一些选择元素缺少 span 元素:

更新了 codepen - https://codepen.io/jquerypain121/pen/rNxgJgV

例如

<span class="text-danger field-validation-valid" data-valmsg-for="Patient.LeftSph" data-valmsg-replace="true"></span>

这是丢失的。在相关的选择元素之后添加它之后,它正在被验证。

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多