部分类的ASP.NET MVC数据注释不起作用

时间:2017-08-23 22:49:03

标签: c# asp.net-mvc validation data-annotations

我已经对数据注释应用了一些验证,但不知怎的,我在代码中遗漏了一些东西。

public class Person 
{
    public people SinglePerson { get; set; }
    public IEnumerable<SelectListItem> ColorNames { get; set; }
    public IEnumerable<SelectListItem> WebCustomer { get; set; }
    public IEnumerable<SelectListItem> PreviouslyOredered { get; set; }
}

这是我的cs类

[MetadataType(typeof(peopleMetaData))]
public partial class people
{
}

public class peopleMetaData
{
    [Required(ErrorMessage = "Please enter a name")]
    [StringLength(50, MinimumLength = 2)]
    public string firstName { get; set; }
}

People类有firstName属性,我想对其进行一些验证。

我错过了什么?

5 个答案:

答案 0 :(得分:2)

在元数据类中,您不能将“属性”指定为完整属性 - 只需要类型和名称 - 试试这个:

public class peopleMetaData
{
    [Required(ErrorMessage = "Please enter a name")]
    [StringLength(50, MinimumLength = 2)]
    public string firstName;
}

请参阅 - { get; set; }“属性”firstName,此处

答案 1 :(得分:1)

对于客户端验证,请确保已包含 @section Scripts { @Scripts.Render("~/bundles/jqueryval") } 在你的观点中

答案 2 :(得分:1)

部分类只能存在于一个项目中。

http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.100).aspx

更具体地说,

  

所有部分类型定义必须是相同类型的部分   在同一个程序集和相同的模块中定义(.exe或.dll   文件)。部分定义不能跨越多个模块。

答案 3 :(得分:0)

您必须检查模型在控制器中是否有效

if (ModelState.IsValid) {
  //do something 
}
else
{
return View();
}

答案 4 :(得分:0)

您的人员类没有firstName的属性。 您首先需要在您的人员类中,然后是MetadataTypeClass

[MetadataType(typeof(peopleMetaData))]
public partial class people
{
    public string firstName { get; set; }
}