79 votes

Pourquoi ne pas Visual Studio de formatage de code fonctionne correctement pour Rasoir de balisage?

Ou, devrais-je plutôt se demander, quand VS de formatage de code fonctionne correctement pour Rasoir de balisage? La mise en forme qui fonctionne pour la plupart des structures, mais il semble s'étouffer " si " blocs. Le code ci-dessous est ce qu'il est formaté par VS. Il est très facile à fixer ce cas, avec une plus tiret, mais j'ai bien accepté la mise en forme dans l'usage quotidien, et aiment à l'utiliser souvent pour la majeure partie de mon code, donc je préfère éviter un formatage manuel si possible. Droit maintenant, j'ai juste le laisser comme VS formats.

@{ 
    if (User.Identity.IsAuthenticated)
    {
    <text>Hello </text>
    @Html.Display("@ViewBag.UserName") <text> - </text>
    @Html.ActionLink("Sign Out", "LogOff", "Account", null, new { style = "font-weight: bold;" })
    }
 }

Je pense que c'est important pour des raisons de lisibilité que, par exemple, dans le ci-dessus, le corps de la si le bloc est en retrait, en plus il suffit de regarder de plus agréable.

43voto

Charles Burns Points 3745

Assurez-vous de régler l'éditeur d'utiliser des caractères d'espace et de ne pas les onglets. L'éditeur semble perdre complètement son esprit quand les onglets sont utilisés. C'est une honte parce que tous ces caractères d'espace à la fin dans le code HTML réel de sortie, ce qui augmente considérablement le transfert de données de taille. Ce que j'ai à faire est de compléter manuellement la mise en forme automatique en cours de frappe. Pas l'idéal, mais j'espère que Microsoft va avoir ce compris pour le prochain service pack.

17voto

Josh Points 1001

J'en ai trouvé une "solution" qui vous permet de continuer à utiliser l'onglet retraits et l'ont mise en forme correcte. C'est plus d'un motif. La clé est d'utiliser de rasoir blocs de code au lieu de code en ligne.

Ainsi, par exemple, remplacez le code suivant:

<div>
    <div>
        @if (true)
        {
            <b>Hi</b>
        }
    </div>
</div>

avec:

<div>
    <div>
        @{
            if (true)
            {
                <b>Hi</b>
            }
        }
    </div>
</div>

Ce dernier va formater correctement, mais l'ancien ne sera pas.

Gardez à l'esprit, le formatage n'est pas parfait, mais c'est mieux qu'avant.

8voto

marcind Points 38002

Il ne fonctionne pas correctement dans tous les cas, parce que c'est un problème difficile à résoudre. Essentiellement, vous avez 3 éditeurs différents (HTML, C#, et Rasoir) tous en interaction dans le même tampon texte. Il y a certains cas (comme celui-ci) où les interactions ont des bugs. Mais nous travaillons sur l'amélioration de l'éditeur pour la prochaine version de Rasoir.

6voto

Derek Kalweit Points 792

Une meilleure alternative ici(plutôt que d'utiliser des espaces pour les onglets), est de changer le bloc de mise en retrait pour le HTML et C#/VB pour "Bloquer" au lieu de "Smart". Ce n'est pas une solution complète, mais l'OMI est beaucoup moins pénible travail que d'utiliser des espaces!

-2voto

guest Points 1

Je vous recommande d'éviter la mise en forme automatique pour déclencher en commentant le morceau de code où vous le collez. De cette façon, les choses ne sont pas abîmés sur la pâte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X