2010-05-10 5 views
4

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

Я хочу это сделать, если возможно, на странице aspx.

Я попытался это:

Text='<%# String.Format("{0}", Eval("Title")).Substring(0,30) %> ' 

Но получил эту ошибку:

Index and length must refer to a location within the string. Parameter name: length

ответ

7

Как говорит Саймон, вы будете сталкиваться с этой ошибкой, когда строка меньше, чем 30 символов.

Вы можете написать защищенный метод на странице -

protected string GetSubstring(string str, int length) 
{ 
    return str.Length > length ? str.Substring(0, length) : str; 
} 

вызов из кода ASPX, как это -

Text='<%# String.Format("{0}", GetSubstring(Eval("Title").ToString(), 30) %>' 
+3

может сделать его еще лучше. защищенная строка GetSubstring (объект obj, int length) { string str = obj.ToString(); return str.Length> длина? str.Substring (0, length): str; } ---- Текст = '<% # GetSubstring (Eval ("Title"), 30)%>' Wht do u say? –

1

Эта ошибка возникает, когда ваша строка не долго, по крайней мере 30 символов. Сначала вы проверите его, а затем обрезаете символы, которые вам не нужны, как вы это делали в своем фрагменте кода.

String s = "hello"; 
if(s.Length > 30) 
{ 
    s.Substring(0,30); 
} 

И в одной строке:

s.Length > 30? s.Substring(0,30) : s; 
0

Substring принимает индекс начала и длину. Поэтому вы должны убедиться, что строка не менее 30 символов, иначе она даст ошибку.

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