【发布时间】:2011-07-04 15:51:47
【问题描述】:
所以经过一些实验后,我惊讶地发现这是完全可以接受的,因为 MVC 不会抱怨我受保护的内部抽象元数据类,并且模型验证仍然有效:
部分域对象,由工具生成:
Partial Public Class SampleDomainObject
Private _id As Integer
Private _customCode As String
Private _description As String
Public Property ID() As Integer
Get
Return Me._id
End Get
Set(ByVal value As Integer)
Me._id = value
End Set
End Property
Public Property CustomCode() As String
Get
Return Me._customCode
End Get
Set(ByVal value As String)
Me._customCode = value
End Set
End Property
Public Property Description() As String
Get
Return Me._description
End Get
Set(ByVal value As String)
Me._description = value
End Set
End Property
End Class
部分域对象,元数据实现
<MetadataType(GetType(SampleDomainObject.Metadata))> _
Partial Public Class SampleDomainObject
Protected Friend MustInherit Class Metadata
<HiddenInput()> _
Public MustOverride Property ID() As Object
<Required(), _
StringLengthRange(4), _
DisplayName("Custom Code")> _
Public MustOverride Property CustomCode() As Object
<Required(), _
StringLength(255)> _
Public MustOverride Property Description() As Object
End Class
End Class
我这样做是因为我不想在 VB.NET 中为 Metadata 类实现具有支持字段、getter 和 setter 的实际属性,以将维护降至最低(我在 .NET 3.5 上,我没有自动属性)。
我担心的是,拥有一个受保护的抽象内部类可能会使其他人在 MVC 之外使用此域对象(我的域对象是共享数据访问框架的一部分)感到困惑。
所以我的问题是,在 MVC 最佳实践领域,这是否可以接受?还聪明?我是 MVC 新人,所以我会接受我能得到的任何反馈。
谢谢!
【问题讨论】:
标签: asp.net-mvc vb.net validation .net-3.5 data-annotations