2011-03-15 101 views
1

我有EF4實體,裝飾有DataAnnotations,我在web.config中啓用了我的clientside驗證功能,以及其他所有功能。它的工作原理,除了在一些我的看法是@model一個MyViewModel其中T是EF4實體之一:使用ViewModel MVC驗證

public class MyViewModel<T> 
{ 
public T Entity {get;set;} 
public string SomeOtherPropertyWhichDoesntNeedValidation {get;set;} 
} 

現在對T某種原因,驗證在視圖模型使用時無法正常工作。 爲了澄清,文本框由@ Html.TextBoxFor(o => o.Entity.Title)生成;等

請幫助

編輯:這是我的實體看起來像

[MetadataType(typeof(TextMeta))] 
public partial class Text 
{ 
     class TextMeta 
     { 
      [Required(ErrorMessage="This is required!!!")] 
      public string Title { get; set; } 
     } 
} 
+0

對於字符串屬性,您可以期待什麼樣的隱式驗證?還是你實施手動的? – 2011-03-15 10:42:50

+0

@Vincent Vancalbergh:我編輯了這個問題。 – TDaver 2011-03-15 11:12:41

+1

如果您返回MyViewModel進行查看,則不會發生驗證。如果你已經返回「課堂文本」,那麼我不明白爲什麼它不會工作。發佈你控制器並在這裏查看 – swapneel 2011-03-15 13:20:27

回答

1

你可以試試這個?

[MetadataType(typeof(TextMeta))] 
public partial class Text {} 

public class TextMeta 
{ 
    [Required(ErrorMessage="This is required!!!")] 
    public string Title { get; set; } 
} 
+0

我不明白這與我原來的代碼有什麼不同(不是嵌套類) – TDaver 2012-03-05 16:23:58

+0

嵌套是一個變化,顯式聲明元類爲public是第二個。你以我的方式嘗試了嗎? – chris 2012-03-05 16:33:42

+0

我不完全有這個項目附近:) – TDaver 2012-03-05 16:54:42