Problem with Substring() - ArgumentOutOfRangeException

asp.net, c#

Solution

string dec = "description";
string result = dec.Substring( 0, dec.Length > 240 ? 240 : dec.Length )

Problem

I have a repeater that displays data from my Projects table. There are projectId, name and description. I use Substring(1, 240) on description. But sometimes the string is shorter than 240, so I get ArgumentOutOfRangeException. Can you tell me how to display the whole text if I get the exception. This is my code. ``` <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <asp:Panel ID="pnlDisplayProjects" runat="server" Visible="true"> <center><h2><b>Проекти</b></h2></center> <asp:Repeater ID="rptrProjects" runat="server"> <HeaderTemplate> <table border="1" cellpadding="2" cellspacing="2" align="center" width="80%" style="background-color:#F7F6F3;"> </HeaderTemplate> <ItemTemplate> <tr> <td align="left" style="width:40px"> <asp:Label ID="LblProjectId" runat="server" Text='<%# Eval("ProjectID") %>' /> </td> <td align="center"> <asp:Label ID="LblName" runat="server" Text='<%# Eval("Name") %>' /> </td> </tr> <tr> <td colspan="2"> <asp:Label ID="LblDescription" runat="server" Text='<%# Eval("Description").ToString().Substring(1, 240) + "..." %>'/> <asp:HyperLink ID="HlMore" runat="server" NavigateUrl='<%#"~/Project/ViewProject.aspx?projectId=" + Eval("ProjectID") %>' Text="More" /> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </asp:Panel> ``` ``` protected override void OnPreRender(EventArgs e) { var table = Projects.GetTableWithProjects(); if (table.Rows.Count > 0) { rptrProjects.DataSource = table; rptrProjects.DataBind(); } else { pnlDisplayProjects.Visible = false; Master.PrintMessage("There are no projects."); } } ```

Original source