2011-11-16 98 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; } 

     } 
    } 
相關問題