none
Confusión con DataAnnotations RRS feed

  • Pregunta

  • Estoy tratando de trabajar con el DataAnnotations pero no he dado con el proceso adecuado explico a continuación:

    tengo una clase creada en donde expreso un campo de esta manera:

    <Required(AllowEmptyStrings:=False, ErrorMessage:="Nombre requerido")>
        <Display(Name:="Nombre de la Base de Datos: ")>
        Private _nombreBD As String
        Public Property nombreBD() As String
            Get
                Return _nombreBD
            End Get
            Set(value As String)
                _nombreBD = value
            End Set
        End Property

    y en la vista para crear un nuevo registro me lo genera de esta manera:

            <div class="form-group">
                @Html.LabelFor(Function(model) model.nombreBD, New With {.class = "control-label col-md-2"})
                <div class="col-md-10">
                    @Html.EditorFor(Function(model) model.nombreBD)
                    @Html.ValidationMessageFor(Function(model) model.nombreBD)
                </div>
            </div>
    

    Lo que quisiera lograr es que me muestre en la vista el Display Name que defino en la clase, en la vista pero me muestra el nombreBD, realmente he leido varios foros he información por internet y no he podido resolverlo. Pido disculpas si es algo muy trivial pero pido que por favor me ayuden.

    Trabajo con Visual Studio 2012, Programación Visual Basic, Modelo MVC 5.


    José Antonio Gómez Linarez Técnico Superior en Informática

    viernes, 26 de septiembre de 2014 22:35

Respuestas

  • hola

    y si usas el atributo <DisplayName("")>

    Private _nombreBD As String

    <Required(AllowEmptyStrings:=False, ErrorMessage:="Nombre requerido")> <DisplayName("Nombre de la Base de Datos:")> Public Property nombreBD() As String


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 27 de septiembre de 2014 13:47
  • Gracias! ya solvente. Estaba realizando mal la declaración del DisplayName debe quedar de esta manera:

    Imports System
    Imports System.Web.DynamicData
    Imports System.ComponentModel
    Imports System.ComponentModel.DataAnnotations
    Imports System.Globalization
    
    Public Class CLASS1
    
        Private _nombreBD As String
        <Required(AllowEmptyStrings:=False, ErrorMessage:="Nombre requerido")>
        <DisplayName("Nombre de la Base de Datos: ")>
        Public Property nombreBD() As String
            Get
                Return _nombreBD
            End Get
            Set(value As String)
                _nombreBD = value
            End Set
        End Property

    Yo lo había colocado antes de la declaración Private y debe ir antes del Public. Gracias Leandro por tu paciencia y colaboración.


    José Antonio Gómez Linarez Técnico Superior en Informática

    martes, 30 de septiembre de 2014 13:43

Todas las respuestas

  • hola

    y si usas el atributo <DisplayName("")>

    Private _nombreBD As String

    <Required(AllowEmptyStrings:=False, ErrorMessage:="Nombre requerido")> <DisplayName("Nombre de la Base de Datos:")> Public Property nombreBD() As String


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 27 de septiembre de 2014 13:47
  • Me da error al colocar ese atributo me dice que no es valido.

    José Antonio Gómez Linarez Técnico Superior en Informática

    sábado, 27 de septiembre de 2014 23:37
  • defines el

    Imports System.ComponentModel

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 28 de septiembre de 2014 0:12
  • Si en el controller tengo definido:

    Imports System.ComponentModel
    Imports System.ComponentModel.DataAnnotations


    José Antonio Gómez Linarez Técnico Superior en Informática

    lunes, 29 de septiembre de 2014 13:18
  • pero esto no es en el controller, debes tener el import en el archivo donde defines la clase del modelo

    en el .cs donde defines la clase

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 29 de septiembre de 2014 14:45
  • En la clase del modelo tengo definido esto:

    Imports System
    Imports System.Web.DynamicData
    Imports System.ComponentModel
    Imports System.ComponentModel.DataAnnotations
    Imports System.Globalization

    Es decir que debo quitar la defición del controller? 

    Por cierto estoy programando en Visual Basic.

    Saludos


    José Antonio Gómez Linarez Técnico Superior en Informática


    lunes, 29 de septiembre de 2014 14:58
  • >>Es decir que debo quitar la defición del controller?

    depende si usas alguna funciona de ese namespace en el controller puede dejarla

    lo importante es que este System.ComponentModel en la clase donde defines el modelo, ya que es alli donde usas el atributo

    >>Por cierto estoy programando en Visual Basic.

    si lo se por eso indique que use el Imports y no el using de c#

    slaudos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 29 de septiembre de 2014 23:09
  • >> pero esto no es en el controller, debes tener el import en el archivo donde defines la clase del modelo

    en el .cs donde defines la clase

    Disculpa por la acotación de que utilizo Visual Basic, pero la hice porque hiciste referencia al archivo de la clase con la extensión .cs y en mi caso es .vb.

    Y realmente no he podido mostrar el Display en el View, he revisado en varios foros y no he dado con el inconveniente. Puede ser que me falte alguna declaración pero realmente no veo que me hace falta, si me puedes ayudar o explicar el proceso de <Display("Name:=Titulo")> y el View. Te agradeceria mucho para poder cerrar este hilo.


    José Antonio Gómez Linarez Técnico Superior en Informática

    martes, 30 de septiembre de 2014 12:27
  • >>pero la hice porque hiciste referencia al archivo de la clase con la extensión .cs y en mi caso es .vb.

    jeje, ok si fue la costumbre

    >>no he podido mostrar el Display en el View

    porque el atributo no es Display sino DisplayName

    Parte 6: Usando datos anotaciones para la validación del modelo

    analiza que atributos se usan en este ejemplo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 30 de septiembre de 2014 13:19
  • Gracias! ya solvente. Estaba realizando mal la declaración del DisplayName debe quedar de esta manera:

    Imports System
    Imports System.Web.DynamicData
    Imports System.ComponentModel
    Imports System.ComponentModel.DataAnnotations
    Imports System.Globalization
    
    Public Class CLASS1
    
        Private _nombreBD As String
        <Required(AllowEmptyStrings:=False, ErrorMessage:="Nombre requerido")>
        <DisplayName("Nombre de la Base de Datos: ")>
        Public Property nombreBD() As String
            Get
                Return _nombreBD
            End Get
            Set(value As String)
                _nombreBD = value
            End Set
        End Property

    Yo lo había colocado antes de la declaración Private y debe ir antes del Public. Gracias Leandro por tu paciencia y colaboración.


    José Antonio Gómez Linarez Técnico Superior en Informática

    martes, 30 de septiembre de 2014 13:43
  • >>Yo lo había colocado antes de la declaración Private y debe ir antes del Public.

    pero esa correccion justamente la plantee en mi primer respuesta


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 30 de septiembre de 2014 14:26
  • Muy cierto disculpa con ver tanto código ya estaba como ciego. Gracias!

    José Antonio Gómez Linarez Técnico Superior en Informática

    martes, 30 de septiembre de 2014 14:28