question: how can you keep things DRY by only applying metadata information for dataannotations and validation on the master class, and then reuse this on the viewmodels?
example:
class book (domain model) and the metadata
Imports System.ComponentModel.DataAnnotations
<MetadataType(GetType(BookMetaData))>
Public Class Book
Public Property BookID As Integer
Public Property Title As String
Public Property Author As String
Public Property ISBN As String
End Class
Public Class BookMetaData
<Key()>
Public Property BookID As Integer
<Display(name:="Book Title")>
<StringLength(150)>
Public Property Title As String
<Display(name:="Author Name")>
<StringLength(50)>
Public Property Author As String
Public Property ISBN As String
End Class
then trying to apply the same dataannotations to a viewmodel BookTitleViewModel with only some fields of the original class
Imports System.ComponentModel.DataAnnotations
<MetadataType(GetType(BookMetaData))>
Public Class BookTitleViewModel
Public Property BookID As Integer
Public Property Title As String
End Class
this throws an error, because not all fields are present:
The associated metadata type for type 'MvcApplicationMetaData.BookTitleViewModel' contains the following unknown properties or fields: Author, ISBN. Please make sure that the names of these members match the names of the properties on the main type.
how can I apply the metadata for just the existing fields?