繁体   English   中英

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

[英]ASP.NET MVC data annotations with partial class doesn't work

我已经对数据注释应用了一些验证,但是以某种方式我在代码中缺少了一些东西。

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属性。

我想念什么?

在元数据类中,您不得将“属性”指定为完整属性-仅需要类型和名称-尝试以下操作:

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

参见-否{ get; set; } { get; set; } { get; set; }此处的firstName “属性”

为了进行客户端验证,请确保在视图中包含@section Scripts { @Scripts.Render("~/bundles/jqueryval") }

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

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

进一步来说,

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM