2009-05-31 8 views
1

J'ai écrit du code pour ASP.NET depuis le début, et aujourd'hui j'ai rencontré quelque chose que je n'avais jamais vu auparavant. En général, j'ai recherché des sauts de ligne en C# (quand ils sont publiés dans ASP.NET à partir d'une zone de texte, par exemple) en attendant "\ r \ n". Maintenant, j'utilise le framework MVC, et le texte venant d'un textarea sur le fil a simplement "\ n" pour les sauts de ligne.En quoi consistent les variations de saut de ligne en C# et ASP.NET? ( r n vs. n)

Y at-il quelque chose qui se passe dans les contrôles TextBox old school qui normalise les sauts de ligne? Puisque MVC utilise juste les données de forme telles quelles, est-ce normal? J'adorerais avoir un aperçu.

Répondre

6

J'ai remarqué que la séquence de saut de ligne réelle diffère d'un navigateur à l'autre.

Si vous avez une zone de texte multiligne sur une page et la page est soumise alors:

IE renvoie « \ r \ n » pour indiquer les nouvelles lignes. FF renvoie "\ n" dans ce cas.

Je l'ai testé quelque part fin 2006, donc ça peut être différent maintenant.

Je ne crois pas que cela puisse avoir quelque chose à voir avec WebForms vs. MVC. Les deux traitent simplement les données soumises et vous les retournent telles quelles.

Si vous souhaitez traiter en quelque sorte et remplacer ces caractères, il serait logique de le faire dans l'ordre long à court:

string userText = form["Text"]; 
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>"); 
+1

Juste pour confirmer, vouliez-vous utiliser "\ n" au lieu de "\ r" string userText = form ["Text"]; userText = userText.Replace ("\ r \ n", "
") .Remplacer ("\ n", "
"); –

+0

Une seule expression Regex pour capturer tous les sauts de ligne serait comme ceci: '\ r \ n? | \ N'; il devrait attraper \ r \ n, \ r et \ n. – GeorgDangl

4

\ n est la variante de fin de ligne sur les systèmes de type * nix. \ r \ n est un comportement de fin de ligne spécifique à Windows.

Si vous recherchez des fins de ligne et exposez votre interface à des environnements non-Windows, assurez-vous de vérifier non seulement \ r \ n mais aussi \ n seul.

Pour plus d'informations, consultez l'article Newline sur Wikipedia.

+0

@Emil H: Merci pour la correction. Bien sûr, vous avez raison, \ n est pour les systèmes * nix, pas. – Kosi2801

Questions connexes