В движке бритвы я использовал LabelFor
вспомогательный метод для отображения имени
Но отображаемое имя кажется не очень удобным для отображения. поэтому мне нужно изменить отображаемое имя, как это сделать ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
asp.net-mvc-3
html-helper
Притворство
источник
источник
Ответы:
Вы можете украсить свойство модели представления
[DisplayName]
атрибутом и указать текст, который будет использоваться:[DisplayName("foo bar")] public string SomekingStatus { get; set; }
Или используйте другую перегрузку помощника LabelFor, которая позволяет вам указать текст:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
И нет, вы не можете указать имя класса в MVC3, как вы пытались сделать, поскольку
LabelFor
помощник не поддерживает это. Однако это будет работать в MVC4 или 5.источник
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
Это был старый вопрос, но существующие ответы игнорируют серьезную проблему отбрасывания любых настраиваемых атрибутов при повторном создании модели. Я добавляю более подробный ответ, чтобы охватить текущие доступные варианты.
У вас есть 3 варианта:
[DisplayName("Name goes here")]
атрибут в класс модели данных. Обратной стороной является то, что это отбрасывается всякий раз, когда вы регенерируете модели данных.Html.LabelFor
. например,@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Ссылка: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx Обратной стороной этого является то, что вы должны повторять метку со всех сторон.Вариант 3 - Добавить класс метаданных:
Microsoft позволяет украшать свойства класса Entity Framework, не изменяя существующий класс ! Это за счет наличия классов метаданных, которые присоединяются к классам вашей базы данных (фактически, боковое расширение вашего класса EF). Это позволяет добавлять атрибуты к связанному классу, а не к самому классу, поэтому изменения не теряются при повторном создании моделей данных .
Например, если ваш класс данных связан
MyModel
соSomekingStatus
свойством, вы можете сделать это следующим образом:Сначала объявите частичный класс с тем же именем (и используя то же пространство имен), что позволит вам добавить атрибут класса без переопределения:
[MetadataType(typeof(MyModelMetaData))] public partial class MyModel { }
Все сгенерированные классы модели данных являются частичными классами, которые позволяют добавлять дополнительные свойства и методы, просто создавая больше классов с тем же именем (это очень удобно, и я часто использую его, например, для предоставления версий форматированных строк других типов полей в модели. ).
Шаг 2: добавьте класс метатаданных, на который ссылается ваш новый частичный класс:
public class MyModelMetaData { // Apply DisplayNameAttribute (or any other attributes) [DisplayName("My New Label")] public string SomekingStatus; }
Ссылка: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Примечания:
[required]
т. Д.), Поэтому вам может потребоваться дублировать их в классе метаданных.источник
Вы можете изменить текст меток, украсив свойство
DisplayName
атрибутом.[DisplayName("Someking Status")] public string SomekingStatus { get; set; }
Или вы можете явно написать необработанный HTML:
<label for="SomekingStatus" class="control-label">Someking Status</label>
источник
Украсьте свойство модели атрибутом DisplayName.
источник
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
источник