我想在MVC6项目中使用MetaDatatType属性,但它似乎还没有。我使用的是7.0.0-rc1-final,所以它应该是最新的。
有谁知道它是否在另一个集会中? 我收到错误,找不到类型或命名空间名称MetadataType。
答案 0 :(得分:2)
经过一些谷歌搜索后,似乎此属性在MVC 6中不可用。您可以在完整的DNX中使用它,但它在DNX Core中不可用。
当然,您可以使用
修饰代码#if DNXCORE50
...
#endif
这样在编译完整的DNX时就不会出现错误,但看起来属性没有达到预期的效果。例如,DisplayName(Name = "...")
不起作用(我没有检查其他选项,如Required
等。)。
恕我直言,Fluent MetadataProvider可能是解决方案,只是我不知道它是否被移植到vNext。我打算联系作者,如果他们不能很快移植它,我会把它分叉,并试图自己移植它。
编辑: ModelMetadataType
取代 MetadataType
。您必须参考 Microsoft.AspNet.Mvc.Core 。我不太确定,但也许你需要 Microsoft.AspNet.Mvc.DataAnnotations 。
无论如何,我对Fluent Data Annotations(Fluent MetadataProvider)的看法仍然有效。您可能还需要阅读一篇有趣的文章:Brad Wilson Why You Don't Need ModelMetadata.Attributes。
答案 1 :(得分:0)
我遇到了同样的问题。我对Asp.NET MVC 5很有经验,但我觉得Asp.Net Core 1.0(Full Framework 4.6.1)是新手。我有一个使用telerik dataaccess核心的模型类库(Framework 4.6.1)。使用MetadataTypeAttribute通过使用伙伴类来装饰模型类几乎是一个令人头痛的问题,因为它根本不起作用!尝试几乎任何事都令人沮丧。那么对我来说解决方案是什么?
我必须使用 ModelMetadataTypeAttribute 而不是 Microsoft.AspNetCore.Mvc.Core 程序集中的 MetadataTypeAttribute 。装饰元数据类(伙伴类)遵循使用Display(...),DisplayName(...)的相同方法,对于验证器也是如此。无论伙伴类(元数据类)是位于模型类的外部还是内部。
然而,将MetadataTypeAttribute直接与模型类而不是伙伴类一起使用,效果非常好!
我能解释的唯一解释是新出现的Microsoft Asp.Net核心技术,DLL过程和功能的重新定位。
PD:不需要Microsoft.AspNetCore.Mvc.DataAnnotations