2010-05-10 114 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個字符,遇到這個錯誤。

你可以在頁面中寫一個受保護的方法 - 從ASPX代碼

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

這樣稱呼它 -

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

可以使它更好。 protected string GetSubstring(object obj,int length) string str = obj.ToString(); return str.Length> length? str.Substring(0,length):str; } ---- Text ='<%#GetSubstring(Eval(「Title」),30)%>' 你說什麼? – 2010-05-11 05:27:44

1

當你的字符串是不是至少30個字符長,就會出現此錯誤。你應該先檢查它,然後切斷你不需要的字符,就像你在代碼片段中做的那樣。

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

而且在同一行:

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

子串需要開始索引和長度。所以你應該確保字符串不小於30個字符,否則會給出錯誤。