En el motor de afeitar, he usado el LabelFor
método auxiliar para mostrar el nombre
Pero el nombre para mostrar parece no ser bueno para mostrar. así que necesito cambiar mi nombre para mostrar cómo hacerlo ...
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
asp.net-mvc-3
html-helper
Impostor
fuente
fuente
Respuestas:
Puede decorar la propiedad de su modelo de vista con el
[DisplayName]
atributo y especificar el texto que se utilizará:[DisplayName("foo bar")] public string SomekingStatus { get; set; }
O use otra sobrecarga del ayudante LabelFor que le permite especificar el texto:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
Y no, no puede especificar un nombre de clase en MVC3 como intentó hacerlo, ya que el
LabelFor
ayudante no lo admite. Sin embargo, esto funcionaría en MVC4 o 5.fuente
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
Esta era una pregunta antigua, pero las respuestas existentes ignoran el grave problema de desechar cualquier atributo personalizado cuando regenera el modelo. Estoy agregando una respuesta más detallada para cubrir las opciones disponibles actualmente.
Tienes 3 opciones:
[DisplayName("Name goes here")]
atributo a la clase del modelo de datos. La desventaja es que esto se desecha cada vez que regenera los modelos de datos.Html.LabelFor
. por ejemplo,@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Referencia: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx La desventaja de esto es que debe repetir la etiqueta en cada vista.Opción 3: agregar una clase de metadatos:
Microsoft permite decorar propiedades en una clase de Entity Framework, ¡ sin modificar la clase existente ! Esto al tener clases de metadatos que se adjuntan a las clases de su base de datos (efectivamente, una extensión lateral de su clase EF). Esto permite que los atributos se agreguen a la clase asociada y no a la clase en sí para que los cambios no se pierdan cuando se regeneran los modelos de datos .
Por ejemplo, si su clase de datos está
MyModel
con unaSomekingStatus
propiedad, podría hacerlo así:Primero declare una clase parcial del mismo nombre (y usando el mismo espacio de nombres), lo que le permite agregar un atributo de clase sin ser anulado:
[MetadataType(typeof(MyModelMetaData))] public partial class MyModel { }
Todas las clases de modelo de datos generadas son clases parciales, que le permiten agregar propiedades y métodos adicionales simplemente creando más clases con el mismo nombre (esto es muy útil y a menudo lo uso, por ejemplo, para proporcionar versiones de cadenas formateadas de otros tipos de campos en el modelo ).
Paso 2: agregue una clase de metadatos a la que haga referencia su nueva clase parcial:
public class MyModelMetaData { // Apply DisplayNameAttribute (or any other attributes) [DisplayName("My New Label")] public string SomekingStatus; }
Referencia: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Notas:
[required]
etc.), por lo que es posible que deba duplicarlos en la clase de metadatos .fuente
Puede cambiar el texto de las etiquetas adornando la propiedad con el
DisplayName
atributo.[DisplayName("Someking Status")] public string SomekingStatus { get; set; }
O puede escribir el HTML sin procesar explícitamente:
<label for="SomekingStatus" class="control-label">Someking Status</label>
fuente
Decora la propiedad del modelo con el atributo DisplayName.
fuente
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
fuente