2012-06-20 12 views
6

tengo una clase modelo similar al siguiente:¿No se muestra el nombre para mostrar en el modelo?

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

[System.Runtime.Serialization.DataContract(IsReference = true)] 
[System.ComponentModel.DataAnnotations.ScaffoldTable(true)] 
public class TestModel 
{ 
    [Display(Name="Schedule Name")] 
    [Required] 
    public string scheduleName; 
} 

Y en mi archivo tengo .cshtml:

 <li> 
      @Html.LabelFor(m => m.scheduleName) 
      @Html.TextBoxFor(m => m.scheduleName, Model.scheduleName) 
      @Html.ValidationMessageFor(m => m.scheduleName) 
     </li> 

Pero por alguna razón mi nombre de presentación no se muestra (la muestra de la etiqueta 'ScheduleName')

juro que tienen el mismo código en otras clases y parece mostrar muy bien. ¿Alguien puede señalar una razón por la cual esto no funcionaría?

+0

generar el proyecto y vuelva a intentarlo – Shyju

+0

@Shyju gracias, pero he reconstruir los proyectos muchas veces (he tenido el problema durante muchos días y simplemente decidió pedir ayuda). – Kyle

Respuesta

7

Los DataAnnotationsModelMetadataProvider trabajos sobre propiedades. Su scheduleName debe ser una propiedad no "solo" de un campo.

[System.Runtime.Serialization.DataContract(IsReference = true)] 
[System.ComponentModel.DataAnnotations.ScaffoldTable(true)] 
public class TestModel 
{ 
    [Display(Name="Schedule Name")] 
    [Required] 
    public string scheduleName { get; set; } 
} 

Nota: De acuerdo con las convenciones de nomenclatura de C#, los nombres de sus propiedades se deben PascalCased.

+0

Te refieres a Pascal-cased; ya está cubierto de camello. – HackedByChinese

+1

Ah, eso fue todo. No me di cuenta de que tenía que ser una propiedad y no un campo. – Kyle

+0

@HackedByChinese buena captura, arreglado :) – nemesv

Cuestiones relacionadas