Как я могу отобразить атрибут hostName свойства в Net Core 2.0 [дубликат]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

3
задан Soner Gönül 11 June 2014 в 06:34
поделиться

1 ответ

Если вы посмотрите на описание для свойства ShortName в атрибуте Display , вы увидите, что он имеет довольно ограниченную область из коробки :

Short Name Description [/g9]

Конечно, это не ограничивает вас использованием этого значения в метаданных модели, но нет никаких нативных помощников, которые делают поэтому.

Начиная с MVC 2 , ModelMetadata предоставляет два метода доступа к базовым данным: FromStringExpression и FromLambdaExpression, поэтому вы на самом деле не нужно начинать с нуля при написании собственного метода помощника или расширения.

Если вы ненавидите записываете HTML-вспомогательные методы, вы можете сделать это все inline:

@ModelMetadata.FromLambdaExpression<RegisterModel, string>( 
            model => model.TransferDate, ViewData).ShortDisplayName} )  

Но также вполне можно добавить метод расширения для обеспечения согласованности доступа, дедупликации кода и улучшения обработки ошибок

public static class MvcHtmlHelpers
{
   public static MvcHtmlString ShortNameFor<TModel, TValue>(this HtmlHelper<TModel> self, 
           Expression<Func<TModel, TValue>> expression)
   {
       var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
       var name = metadata.ShortDisplayName ?? metadata.DisplayName ?? metadata.PropertyName;

       return MvcHtmlString.Create(string.Format(@"<span>{0}</span>", name));
   }
}

И затем использовать, как и любой другой вспомогательный метод:

@Html.ShortNameFor(model => model.TransferDate)

Дополнительная литература:

5
ответ дан KyleMit 19 August 2018 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: