如何编辑EF从数据库生成的模型的验证?

时间:2011-11-16 14:06:10

标签: asp.net-mvc asp.net-mvc-3 entity-framework

我有一个包含表用户的数据库。我从数据库生成EF .edmx,然后我可以通过以下方式访问用户:

public ActionResult Index()
    {
        var obj = context.Users.ToList();
        return View(obj);
    }

哪个好我的问题是当我进行编辑时:

public ActionResult Edit(Guid id)
    {
        var obj = context.Users.Where(c => c.UserId == id).SingleOrDefault();
        return View(obj);
    }

我不知道如何访问User模型来添加验证消息?我希望看到类似的东西:

public class User
{
    [Required]
    [Display(Name = "username")]
    public string UserName { get; set; }
{

但是我没有,我是新手,并且在从数据库生成时,并不真正了解如何访问/编辑此模型。任何建议教程将不胜感激。

3 个答案:

答案 0 :(得分:3)

您可以在与模型相同的命名空间中创建一个包含元数据的分部类:

   [MetadataType(typeof(IPConfigMetadata))]
    public partial class IPConfig
    {
        internal sealed class IPConfigMetadata
        {
            private IPConfigMetadata() { }

            [RegularExpression(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", ErrorMessage = "Must be a valid IP Address")]
            public string CommanderIP { get; set; }

            [Range(1024, 65535)]
            public int IPPort { get; set; }

        }
    }

答案 1 :(得分:3)

看看你是否首先使用代码你可以使用MISHA建议的用户,你首先使用数据库(因为你正在从DB生成edmx)。在这种情况下,mvc-validation自动挂钩 - 你提供了模型的元数据。

您可以按以下方式创建元数据

    namespace Your_Models_NameSpace
    {
        [MetadataType(typeof(UserMetaData))]
        public partial class User
        {        
            public class UserMetaData
            {
                [DisplayName("User Name")]
                [Required(ErrorMessage = "Please provide a valid username")]
                public object UserName { get; set; }
          }
       }
}

答案 2 :(得分:1)

检查this帖子。

您可以执行以下操作:

public class User
{
    [Required(ErrorMessage = "Username is required")]
    public string UserName { get; set; }
{

然后在你的行动中你会这样做:

public ActionResult Edit(User user)
    {
        if(ModelState.IsValid)
        {
             // Save user
        }
        return View(user);
    }