Index und Länge müssen sich auf einen Ort innerhalb der Zeichenkette beziehen?

7

Ich versuche, die ersten 50 Buchstaben zu erhalten, also habe ich die Funktion subString benutzt, um sie zu bekommen.

Wie Sie sehen können, habe ich diesen Code verwendet, um es zu bekommen:

%Vor%

Aber leider funktioniert es nicht und es erscheint eine Fehlermeldung:

  

Index und Länge müssen sich auf eine Position innerhalb der Zeichenfolge beziehen.

Gibt es einen anderen Weg, es zu reparieren?

weil der Benutzer derjenige ist, der die Dateneingabe steuert! Manchmal wird er 10 Buchstaben eingeben, manchmal 1000 Buchstaben. Wie kann ich das lösen?

Ich habe sie alle ausprobiert, aber können wir es so benutzen:

<%# IIf(Eval("BannerDescription").ToString().Length > 49, Eval("BannerDescription").ToString().Substring(0, 49), Eval("BannerDescription"))%>

Danke.

    
HAJJAJ 13.09.2011, 07:24
quelle

7 Antworten

18

Vielleicht so etwas -

%Vor%     
Svetlin Panayotov 13.09.2011, 07:42
quelle
3
%Vor%     
Yuriy Rozhovetskiy 13.09.2011 07:38
quelle
1

Sie sollten in der Lage sein, eine Funktion zu implementieren, die Ihnen eine kürzere Version bietet, wenn sie zu lang ist:

%Vor%     
paxdiablo 13.09.2011 07:33
quelle
1

Wenn dies Ihr Problem ist und Sie .NET 3.5 verwenden, können Sie versuchen:

%Vor%

Sie nennen es genauso wie Substring , aber es wird nicht nach falschem Index / Länge geworfen. Um ein Beispiel zu geben: <%# Eval("BannerDescription").ToString().SubstringNE(1, 50)%> . NE ist für "Keine Ausnahme".

    
xanatos 13.09.2011 07:42
quelle
1

HINWEIS: Diese Antwort bezieht sich auf

Damit erhalten Sie nicht mehr als 50 Zeichen:

%Vor%

Besser noch, führen Sie eine geschützte Methode in code-behind (.cs) ein, auf die im Markup verwiesen werden kann:

Auszeichnung:

%Vor%

Code-Behind:

%Vor%

So sieht es sauberer aus. : -)

    
HenrikW 13.09.2011 07:37
quelle
0

50 ist mehr als die Länge Ihrer Ergebniszeichenfolge, Ihr Code wird in allen Fällen fehlschlagen, wenn dies der Fall ist. Sie dürfen keinen Parameter angeben, der größer als die Zeichenmenge ist. Arbeiten Sie mit der Eigenschaft String.Length, die Ihnen dynamisch die Anzahl der Zeichen in der Zeichenfolge angibt. Wenn Ihr String also länger als 50 Zeichen (oder gleich 50) ist, können Sie sagen, dass Sie die ersten 50 Zeichen erhalten, ansonsten können Sie nur die ganze Zeichenfolge erhalten, die etwas weniger als 50 Zeichen enthält.

Sie können diesen Code verwenden:

Eval ("BannerDescription"). ToString (). Länge & gt; 49? Eval ("BannerDescription"). ToString (). SubString (0, 49): Eval ("BannerDescription"). ToString ()

Grüße, Peter

    
Peter Metz 13.09.2011 07:26
quelle
0

Verwenden Sie unterhalb Code-Snippet, ich habe es oft in meinen Projekten verwendet.

%Vor%     
aagnee 13.09.2011 07:38
quelle

Tags und Links