2010-05-10 3 views
4

Je lie certaines données à contrôler, mais je souhaite limiter le nombre de caractères d'un champ spécifique à 30 premiers caractères.Récupération de la sous-chaîne d'une valeur liée

Je veux le faire, si c'est possible, sur la page ASPX.

J'ai essayé ceci:

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

mais nous avons eu cette erreur:

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

Répondre

7

Comme le dit Simon, vous rencontrerez cette erreur lorsque la chaîne est inférieure à 30 caractères.

Vous pouvez écrire une méthode protégée dans votre page -

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

Appelez-le à partir du code ASPX comme celui-ci -

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

peut le rendre encore meilleur. chaîne protégée GetSubstring (objet obj, longueur int) { chaîne str = obj.ToString(); return str.Longueur> longueur? str.Substring (0, longueur): str; } ---- Text = '<% # GetSubstring (Eval ("Titre"), 30)%>' Que dis-tu? –

1

Cette erreur se produit lorsque votre chaîne est pas au moins 30 caractères. Vous devriez le vérifier d'abord, puis couper les caractères dont vous n'avez pas besoin comme vous l'avez fait dans votre extrait de code.

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

Et en une ligne:

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

Substring prend un indice de démarrage et une longueur. Donc, vous devriez vous assurer que la chaîne ne soit pas inférieure à 30 caractères sinon elle donnera l'erreur.

Questions connexes