0


我们正在从mvc2升级到mvc3,并且真正遇到远程验证功能问题。这是web.config中的appsetting的样子在asp.net中的远程验证mvc 3

<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项目,在这个项目中,一切似乎都很好,但是当我尝试在我的应用程序中实现它时,它不起作用。任何帮助,高度赞赏。
感谢

回答

1

[遥控( “CheckDuplicateNIC”, “HCM”, “员工已存在”)]

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