0


我们正在从 mvc2 升级到 mvc3,并且在远程验证功能方面确实遇到了问题。这就是 web.config 的 appsetting 的样子

<appSettings>
    <add key ="ClientValidationEnabled" value ="true"/>
    <add key ="UnobtrusiveJavaScriptEnabled" value ="true"/>
    <add key="CrystalImageCleaner-AutoStart" value="true" />
    <add key="CrystalImageCleaner-Sleep" value="60000" />
    <add key="CrystalImageCleaner-Age" value="120000" />
  </appSettings>

这就是我的模型和相关元数据的样子

[MetadataType(typeof(setupEmployeeValidator))]
    public partial class setupEmployee { }


    public class setupEmployeeValidator
    {
        [Required(ErrorMessage = "Employee Name is Required")]
        [StringLength(50, ErrorMessage = "Employee Name should be less than {1} characters")]

        public String EmployeeName { get; set; }
        [Required(ErrorMessage = "ID card number is Required")]
        [RegularExpression(@"^\d{5}-\d{7}-\d{1}", ErrorMessage = "Format for CNIC is xxxxx-xxxxxxx-x")]
        [StringLength(16, ErrorMessage = "ID card number should be less than {1} characters")]
        [Remote("CheckDuplicateNIC","hcm","Employee Already Exists")]
        public String CNIC { get; set; }
        [Required(ErrorMessage = "Gender is Required")]
        public String Gender { get; set; }
        [Required(ErrorMessage = "Religion is Required")]
        [StringLength(50, ErrorMessage = "Religion should be less than {1} characters")]
        public String Religion { get; set; }
        public DateTime? DOB { get; set; }
        [Required(ErrorMessage = "Nationality is Required")]
        [StringLength(50, ErrorMessage = "Nationality should be less than {1} characters")]
        public String Nationality { get; set; }
        [Required(ErrorMessage = "Marital Sataur is Required")]
        public String MaritalStatus { get; set; }
        public int ScaleID { get; set; }

    }

我已确保所需的 jquery 文件以正确的顺序加载到页面上。当我检查生成的 html 代码时,我没有找到为远程验证生成的任何 HTML5 字段(那里存在正则表达式和所需验证的字段)

<input type="text" value="" name="CNIC" id="CNIC" data-val-required="ID card number is Required" data-val-regex-pattern="^\d{5}-\d{7}-\d{1}" data-val-regex="Format for CNIC is xxxxx-xxxxxxx-x" data-val-length-max="16" data-val-length="ID card number should be less than 16 characters" data-val="true">

我不知道可能是什么问题。我创建了一个示例 mvc3 项目,在该项目中一切似乎都工作正常,但是当我尝试在我的应用程序中实现它时它就不起作用。非常感谢任何帮助。
谢谢

4

1 回答 1

1

[远程(“CheckDuplicateNIC”,“hcm”,“员工已经存在”)]

上面的线是罪魁祸首。在 MVC2 中,我为远程验证创建了自己的验证属性,它作为所有远程验证属性的基类,不幸的是具有相同的名称。当我转换为 mvc3 时,.NET 仍在将参数传递给旧类(我的类是为 MVC 2 创建的)。这就是为什么没有仅为远程验证生成 html5 属性的原因。
谢谢

于 2011-04-01T09:57:43.233 回答