Попробуйте что-то вроде этого:
public static string TruncateString(string longString, int maxLength)
{
if (string.IsNullOrEmpty(longString) || longString.Length <= maxLength)
{
return longString;
}
else
{
return longString.Substring(0, maxLength);
}
}
Тогда ваш код в aspx будет выглядеть примерно так:
<%# TruncateString(Eval("FieldName").ToString(), 150) %>
Возможно, вы захотите добавить параметр postFix
к приведенному выше, чтобы усеченные строки добавлялись, скажем, с помощью многоточия (...), чтобы предупредить пользователя о том, что они были усечены.
Мне нравится хранить подобные вещи в служебных классах, чтобы они были доступны по всему приложению. Я также думаю, что это хорошая идея - не пытаться объединить это и Eval в один метод, так как a) они делают совершенно разные вещи, и b) вы можете использовать вышеописанное, когда вы не используете Eval.
Редактировать: Если вы хотите, чтобы Eval ("FieldName") был нулевым, не вызывая исключение нулевой ссылки, используйте это вместо:
<%# TruncateString((Eval("FieldName") ?? "").ToString(), 150) %>