2015-03-31 39 views
0

如何在asp.net中正確檢查concatenated string的長度?如果檢查DataBound控件?

如果Eval("FirstName")Eval("LastName")的總長度比21長,我想縮短字符串並在末尾添加「...」。

<span id="userNameText"> 
     <%if (string.Concat(Eval("FirstName"), " ", Eval("LastName")).ToString().Length > 21) 
      { 
       string.Concat(Eval("FirstName"), " ", Eval("LastName")).ToString().PadRight(19).Substring(0, 19).TrimEnd() + "..."; 
      } 
      else 
      { 
       string.Concat(Eval("FirstName"), " ", Eval("LastName")); 
      } 
     %> 
    </span> 
+3

你是否認爲這樣做檢查(而且基本上這整個邏輯移動)到您的域類(或理想莫del爲你的用戶界面)? 我發表了[類似問題的回答](http://stackoverflow.com/questions/29367537/embeded-if-statment-in-gridview-component/29367887#29367887)。檢查一下,也許你會同意,這是處理你的案件更優雅的方式。 – Michael 2015-03-31 14:14:34

+0

@Michael是的,你可能是對的..我可能會把它移動到'',並用jQuery做到 – JoJo 2015-03-31 14:17:11

+1

我已經編輯過你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2015-03-31 16:18:25

回答

1

您可以使用一個輔助的方法來做到這一點...

public static string Truncate(string source, int length) 
{ 
if (source.Length > length) 
{ 
    source = String.Concat(source.Substring(0, length), " ..."); 
} 
return source; 
} 

<span id="userNameText"> 
    <%= Truncate(string.Concat(Eval("FirstName"), " ", Eval("LastName")).ToString(), 21) %> 
</span> 

https://codereview.stackexchange.com/questions/71148/truncate-string-method

0

你不能,如果與其他使用評估和演示,而是你可以在C#中使用三元運算符(?:)

<span id="userNameText"> 
    <%# (string.Concat(Eval("FirstName"), " ", Eval("LastName")).ToString().Length > 21) ? string.Concat(Eval("FirstName"), " ", Eval("LastName")).ToString().PadRight(19).Substring(0,19).TrimEnd() + "..." : string.Concat(Eval("FirstName"), " ", Eval("LastName")) %> 
</span>