No motor de barbear, usei o LabelFor
método auxiliar para exibir o nome
Mas o nome de exibição parece não ser bom. então eu preciso mudar meu nome de exibição como fazer isso ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
asp.net-mvc-3
html-helper
Farsa, falso
fonte
fonte
Respostas:
Você pode decorar a propriedade do seu modelo de visualização com o
[DisplayName]
atributo e especificar o texto a ser usado:[DisplayName("foo bar")] public string SomekingStatus { get; set; }
Ou use outra sobrecarga do auxiliar LabelFor, que permite especificar o texto:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
E, não, você não pode especificar um nome de classe em MVC3 como tentou fazer, pois o
LabelFor
auxiliar não oferece suporte para isso. No entanto, isso funcionaria em MVC4 ou 5.fonte
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
Essa era uma pergunta antiga, mas as respostas existentes ignoram o sério problema de descartar quaisquer atributos personalizados ao regenerar o modelo. Estou adicionando uma resposta mais detalhada para cobrir as opções atuais disponíveis.
Você tem 3 opções:
[DisplayName("Name goes here")]
atributo à classe do modelo de dados. A desvantagem é que isso é jogado fora sempre que você regenera os modelos de dados.Html.LabelFor
. por exemplo,@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Referência: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx A desvantagem disso é que você deve repetir o rótulo em cada visão.Opção 3 - Adicionar uma classe de metadados:
A Microsoft permite decorar propriedades em uma classe do Entity Framework, sem modificar a classe existente ! Isso por ter classes de metadados que se anexam às suas classes de banco de dados (efetivamente uma extensão lateral de sua classe EF). Isso permite que atributos sejam incluídos na classe associada e não na própria classe, de forma que as alterações não sejam perdidas quando você gerar novamente os modelos de dados .
Por exemplo, se sua classe de dados estiver
MyModel
com umaSomekingStatus
propriedade, você poderia fazer assim:Primeiro, declare uma classe parcial com o mesmo nome (e usando o mesmo namespace), o que permite adicionar um atributo de classe sem ser substituído:
[MetadataType(typeof(MyModelMetaData))] public partial class MyModel { }
Todas as classes de modelo de dados geradas são classes parciais, que permitem adicionar propriedades e métodos extras simplesmente criando mais classes com o mesmo nome (isso é muito útil e eu costumo usá-lo, por exemplo, para fornecer versões de string formatadas de outros tipos de campo no modelo )
Etapa 2: adicione uma classe de metatadados referenciada por sua nova classe parcial:
public class MyModelMetaData { // Apply DisplayNameAttribute (or any other attributes) [DisplayName("My New Label")] public string SomekingStatus; }
Referência: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Notas:
[required]
etc.), portanto, pode ser necessário duplicá-los na classe Meta-dados.fonte
Você pode alterar o texto dos rótulos adornando a propriedade com o
DisplayName
atributo.[DisplayName("Someking Status")] public string SomekingStatus { get; set; }
Ou você pode escrever o HTML bruto explicitamente:
<label for="SomekingStatus" class="control-label">Someking Status</label>
fonte
Decore a propriedade do modelo com o atributo DisplayName.
fonte
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
fonte