2009-08-21 10 views
73

Cualquier persona tiene alguna idea sobre cómo especificar texto cuando usa Html.LabelFor(c=>c.MyField). Es solo MyField podría no ser un nombre apropiado para mostrar en la pantalla, es posible que desee "The Super Fantastic Field" en su lugar, pero no parece haber sobrecargas.Html.LabelPara texto especificado [ASP.NET MVC 2]

¿Alguna idea?

Respuesta

128

Utiliza System.ComponentModel.DataAnnotations.DisplayAttribute:

[Display(Name = "My Field")] 
public string MyField { get; set; } 

al establecer la propiedad ResourceType en su atributo le permitirá utilizar un archivo de recursos.

(antes que .NET 4 uso System.ComponentModel.DisplayNameAttribute con la advertencia de que el nombre de visualización debe ser una constante en tiempo de compilación.)

+0

Voy a probar esto mañana. – Kezzer

+9

Eres el ganador. Sin embargo, debes tener 'using System.ComponentModel;'. – Kezzer

+0

Tengo mi generador de códigos escupiéndolos automáticamente, insertando espacios entre las palabras de Pascal-cased. ¡Funciona de maravilla! – GalacticCowboy

0

Todavía no he comprobado el CP1 pero leí el lanzamiento de Scott y me parece recordar que el código fue generado por T4. Supongo que siempre puedes modificar eso, pero sospecho que proporcionarán sobrecargas en CP2.

Editar: La fuente siempre está disponible y por lo tanto usted podría simplemente modificar el método, cambiar el generador T4, y estará listo para comenzar. También ponga un boleto o solicite (de alguna manera) ese mod para que funcione en la próxima versión.

+0

Lástima, estoy haciendo una vista previa de trabajo pero no es realmente viable ya que nuestros nombres de campo son bastante falsos en comparación con sus contrapartes de descripción. – Kezzer

3

no he descargado v2 todavía, así que no puedo probar, pero creo que funciona como DynamicData, en cuyo caso se haría algo como esto en su modelo:

[Display(Name = "The Super Fantastic Field")] 
public string MyField {get;set;} 
+0

La pantalla no está disponible, y intellisense tampoco puede encontrarla en ninguna biblioteca. – Kezzer

+0

Agregue una referencia a System.ComponentModel.DataAnnotations.dll y agregue usando System.ComponentModel.DataAnnotations. – Daniel

+0

Más bien, agregue referencia a System.ComponentModel.DataAnnotations desde el GAC (es decir, en la pestaña .NET de agregar referencias) – Daniel

26

Hay una nueva sobrecarga en MVC 3 por lo que debe ser capaz de specifiy prueba personalizada para la etiqueta para el ayudante.

+8

@ Html.LabelFor (model => model.IdCode, "Friendly Name") –

40

solución fácil sólo tiene que añadir lo siguiente en la vista:

@Html.LabelFor(c=>c.MyField, "My Field") 
0

Hay 5 sobrecargas. Varios ofrecen el segundo parámetro de "string labelText", que definiría como "The Super Fantastic Field".

0

Hay dos maneras
1 "anotaciones directas"
2 "Annotatinos con un recurso"
anotaciones directos

[Display(Name = "My Field")] 
public string MyField { get; set; } 

Annotatinos con un recurso

[Display(Name = "My_Field",ResourceType = typeof(Resource))] 
public string MyField { get; set; } 

La segunda manera requerirá añadir un valor en el archivo de recursos probablemente denominado Resource.resx.
Uso que se adapte a su propósito.

Cuestiones relacionadas