Click here to Skip to main content
11,411,263 members (65,521 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: validation Attributes , +
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?
Posted 3-May-13 4:30am
gicalle751.9K

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 149
1 Sascha Lefévre 110
2 OriginalGriff 103
3 Dave Kreskowiak 80
4 Maciej Los 78
0 Sergey Alexandrovich Kryukov 8,920
1 OriginalGriff 6,983
2 Maciej Los 3,430
3 Abhinav S 3,248
4 Peter Leow 3,059


Advertise | Privacy | Mobile
Web04 | 2.8.150414.5 | Last Updated 3 May 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100