Click here to Skip to main content
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.7K

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

  Print Answers RSS
0 George Jonsson 175
1 Kornfeld Eliyahu Peter 169
2 Zoltán Zörgő 139
3 PIEBALDconsult 130
4 OriginalGriff 120
0 OriginalGriff 6,165
1 DamithSL 4,658
2 Maciej Los 4,107
3 Kornfeld Eliyahu Peter 3,649
4 Sergey Alexandrovich Kryukov 3,342


Advertise | Privacy | Mobile
Web01 | 2.8.141220.1 | Last Updated 3 May 2013
Copyright © CodeProject, 1999-2014
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