Может ли представление отображать только первую n-ю строку - PullRequest
0 голосов
/ 10 октября 2009

Я рендерил раскрывающийся список, где текст, отображаемый в раскрывающемся списке, слишком длинный для удобства. Как можно ограничить количество символов, отображаемых в раскрывающемся списке, без необходимости возврата к контроллеру?

<option value="<%=order.ID %>"><%=order.Item %></option>

ТНХ

Ответы [ 3 ]

3 голосов
/ 10 октября 2009
<%= order.Item.Length > 10 ? order.Item.Substring(0, 7) + "..." : order.Item %>

Как упоминает Дэн ниже, проверка на нулевое значение и использование вспомогательного метода - хорошая идея.

public static class StringHelpers
{
    public static string SmartSubstring(string value, int maxLength)
    {
        if(String.IsNullOrEmpty(value))
            return String.Empty;

        if(value.Length > maxLength)
            return value.Substring(0, maxLength -3) + "...";

        return value;
    }
}

Тогда просто убедитесь, что вы включили этот класс в начало вашего aspx, и вы можете сделать:

<%= StringHelpers.SmartSubstring(Order.Item, 10) %>
1 голос
/ 10 октября 2009

Мне не нравится много логики в моем представлении, и подобные вещи полезны во всем (не только в представлениях).

<option value="<%=order.ID %>"><%=order.Item.Truncate(10) %></option>

И метод усечения ...

public static class StringExtensions
{
  public static string Truncate(this string value, int trim)
  {
    //Don't do anything if the value is null, empty, or doesn't meet our trim constraint
    if (string.IsNullOrEmpty(value) || value.Length <= trim)
    {
      return value;
    }

    return string.Format("{0}...", value.Substring(0, trim));
  }
}

Оговорка: Я не обрезал длину многоточия. Если вы хотите, вы должны выполнить дополнительную проверку, чтобы убедиться, что (trim-3) больше нуля. Также вы должны посмотреть, учитывает ли длина обрезки длину строки. Я бы так и сделал, но мой мозг отключился на ночь!

0 голосов
/ 10 октября 2009

Используйте подстроку в order.item. Если вы хотите, чтобы максимум составлял, скажем, 20 символов, то выберите первые 17 символов, соединенных с помощью «...»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...