【问题标题】:MetadataType and DataAnnotations not WorkingMetadataType 和 DataAnnotations 不起作用
【发布时间】:2012-11-24 03:59:09
【问题描述】:

我已经盯着这个很久了,看不到问题。

我已经使用 EF4 和 POCO 生成器生成了一些 POCO 类。

我正在尝试使用 MetadataType 属性来创建可以在我的视图 (asp.net MVC) 中使用的“伙伴”类并利用数据注释。

所以,我有一个名为 Contact 的域实体 (POCO)。那是在命名空间 BreakAwayEntities 中名为 BreakAwayEntities 的项目中。

我在 View 的项目 (WebUI) 中创建了一个公共部分类。是这样的:

namespace BreakAwayEntities
{
    [MetadataType(typeof(ContactMetadataSource))]
    public partial class Contact
    {
        internal sealed class ContactMetadataSource
        {
            [HiddenInput(DisplayValue = false)]
            public int ContactID { get; set; }

            [Display(Name = "First Name")]
            public string FirstName { get; set; }

            [Display(Name = "Last Name")]
            public string LastName { get; set; }

            public string Title { get; set; }
        }        
    }
}

但是,我收到以下错误消息:

错误 10 无法隐式转换类型 'System.Collections.Generic.List [c:\Program Files (x86)\参考 Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll]' 到 'System.Collections.Generic.List [c:\Program Files (x86)\参考 Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll]' F:\Code\Sandpit\GetAwayBreaks\WebUI\Controllers\CustomerController.cs 29 38 WebUI

由于某种原因,接线无法正常工作。部分类的命名空间是相同的,但它们在不同的项目中。那应该没关系吧?在视图中使用的 Contact 类不会显示单个属性。它应该暴露 POCO 的所有属性,由 MetadataType 增强。

如果我错过了一个程序集,我不会得到任何关于它可能是什么的提示。

我错过了什么?我需要在 Global.asax 中注册一些东西吗?谢谢

【问题讨论】:

  • 请在“F:\Code\Sandpit\GetAwayBreaks\WebUI\Controllers\CustomerController.cs”中显示代码。这就是错误所在。

标签: asp.net-mvc data-annotations poco metadatatype


【解决方案1】:

部分类只能存在于一个项目中。

http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.100).aspx

更具体地说,

所有属于同一类型的部分类型定义必须 在同一程序集和同一模块中定义(.exe 或 .dll 文件)。部分定义不能跨越多个模块。

【讨论】:

  • 我有一种感觉,就是这样。这让我不得不在域项目 BreakAwayEntities 中引用 System.Web.Mvc 程序集,因为 HiddenFieldAttribute 来自那里。真可惜。感谢您的回答!
  • 更正我最后的评论。我将不得不咬紧牙关,而不是直接在我的 Web 项目中使用 Contact 类(它在我的 ViewModel 中)。在 Domain 项目中引用 Web 程序集基本上会违背拥有一个应该不了解 View 技术的 Domain 对象的目的。所以在这些领域对象中不能使用 Mvc 属性。无赖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多