布拉德·威爾遜張貼在ASP.NET MVC的新ModelMetaData一個偉大的博客系列: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.htmlASP.NET MVC ModelMetaData:有沒有基於RequiredAttribute設置IsRequired的方法?
在書中,他描述瞭如何ModelMetaData類的意見和模板助手,現在暴露出來。我想要做的是在表單字段標籤旁邊顯示星號(如果該字段是必需的),所以我想過使用ModelMetaData的IsRequired屬性。但是,默認情況下IsRequired對所有不可爲null的屬性都爲true,對於所有可爲null的屬性則爲false。問題是,字符串始終爲空,所以對於字符串,IsRequired屬性始終爲false。有誰知道如何覆蓋如何設置IsRequired的默認值?或者,我想過利用RequiredAttribute屬性來裝飾我的屬性,但RequiredAttribute似乎沒有通過ModelMetaData類公開。有誰知道如何解決這個問題?
在此先感謝。
感謝。這正是我所尋找的解決方案。但是,我似乎無法讓這個工作正常。即使通過我的屬性裝飾了RequiredAttribute,它在CreateMetadata()的「屬性」列表中正確顯示,屬性.Where(x => x.Equals(typeof(RequiredAttribute)))返回一個空列表,這會導致IsRequired仍然是假的。這個lambda表達式有什麼問題嗎? – 2009-11-03 05:09:42
「x.Equals(typeof(RequiredAttribute))」應爲「x是RequiredAttribute」。 * x *是一個屬性的實例,而不是屬性的類型。 – Levi 2009-11-03 08:53:53
謝謝Zowens和Levi。我的問題現在已經解決了。 – 2009-11-03 16:24:19