2009-11-26 2 views
0

как я могу ограничить количество символов, отображаемых для html.encode?подстрока на html.encode

<%= Html.Encode(item.LastName.Substring(1,30))%> 

ошибка: указатель и длина должны относиться к местоположению внутри строки.

+0

Мы не автоматический синтаксис текстмаркеров, чтобы определить, какой язык он – kolypto

ответ

6

Вам нужно проверить длину строк больше 30, в противном случае вы указываете длину, которая упадет с конца строки ... (Я также изменил индекс начала на 0, если вы не сделали значит оставить свой первый символ)

<%= Html.Encode(item.LastName.Substring(0, 
        item.LastName.Length > 30 ? 30 : item.LastName.Length))%> 
+0

Вы пропустили закрывающую скобку. ;) –

+0

Спасибо, исправлено .. –

2
<%= Html.Encode(item.LastName.Substring(0, item.LastName.Length > 30 ? 30 : item.LastName.Length))%> 

Если вы хотите проверить нуль, сделать это вместо того, чтобы:

<%= Html.Encode(
item.LastName == null ? string.Empty : 
item.LastName.Substring(0, item.LastName.Length > 30 ? 30 : item.LastName.Length))%> 
+0

Индексы основаны на 0, а .Length - 1. > = в этом случае работать не будет. Используйте> вместо этого. –

+0

А, да. Спасибо. Исправлена. –

+0

Спасибо всем за ответы. Простите меня, но что, если строка равна нулю? – dmarkez

4

вы также могли бы сделать что-то вроде

<%= Html.Encode(item.LastName.Substring(0, Math.Min(item.LastName.Length, 30)) %> 

сэкономить байты

Смежные вопросы