C# 带有分部类的ASP.NET MVC数据批注不';行不通

C# 带有分部类的ASP.NET MVC数据批注不';行不通,c#,asp.net-mvc,validation,data-annotations,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; } pu

我已经用数据注释进行了一些验证,但不知何故,我在代码中遗漏了一些东西

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; }
}
People
类有一个
firstName
属性,我想对其进行一些验证


我遗漏了什么?

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

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

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

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

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

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

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

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

对于客户端验证,请确保已包括
@sectionscripts{@Scripts.Render(“~/bundles/jqueryval”)}

对于客户端验证,请确保在视图中包含
@sectionscripts{@Scripts.Render(“~/bundles/jqueryval”)}

在元数据类的视图中,不能将“属性”指定为完整属性-只需要类型和名称-请尝试以下操作:

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

请参见-no
{get;set;}
有关元数据类中的
firstName
属性,您不能将“属性”指定为完整属性-只需要类型和名称-尝试以下操作:

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

请参见-no
{get;set;}
,了解此处的
firstName
“属性”

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

更具体地说

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


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

更具体地说

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


您是否在控制器中应用了模型检查??嗨,什么检查?您是否在控制器中应用了模型检查??嗨,什么检查?谢谢您的帮助。现在可以工作了,但我没有看到验证消息。如果您可以将答案标记为正确,以避免其他回答问题,我们欢迎您。现在可以工作了,但我没有看到验证消息。如果您可以将答案标记为正确,以避免其他答案,则欢迎您。“人员”是自动生成的。我有一个SQL表,它的名称是我用LINQ导入到SQL层的。我有一个同名的SQL表,我已经用LINQ导入到SQL层。这就是问题所在。谢谢你的回复。@laz不用担心:)这就是问题所在。谢谢您的回复。@laz不用担心:)我的解决方案现在可以使用指定的{get;set;}。为了某种代码可读性,最好将其从解决方案中分离出来?@laz:那么您做了什么/做了哪些更改以使其现在能够工作呢?我在布局页面中添加了“jqueryval”(正如@OrElse所建议的),并在控制器中使用了“Model.IsValid”(正如@moath naj所建议的),我的解决方案现在可以使用指定的{get;set;}。出于某种代码可读性的考虑,将其从解决方案中删除是否更好?@laz:那么您做了什么/做了哪些更改以使其现在能够工作呢?我在布局页面中添加了“jqueryval”(如@OrElse所建议),并在控制器中使用了“Model.IsValid”(如@moath naj所建议)