2011-11-16 77 views
0

我有一个表用户的数据库。我生成从数据库中的.edmx EF,然后我可以通过访问用户:如何编辑EF从数据库生成的模型验证?

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); 
    } 

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

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

但我不是,我是新手,并不真正懂得如何访问/编辑这个模型时,从数据库中产生。任何意见教程将不胜感激。

回答

3

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

您可以创建一个元数据如下

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; } 
      } 
     } 
} 
+0

感谢抬头...... +1 – misha

+0

我似乎有使用[遥控(“UserNameExists”,“帐户”麻烦“,用户名是已经采取。“)]现在。阻止条目但不显示消息? – Sparkle

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); 
    } 
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; } 

     } 
    } 
相关问题