2011-06-23 18 views
35

Więc po prostu mam wołowinę w sposobie, w jaki Visual Studio formatuje kod brzytwy. Zawsze miałem problemy ze studiem visual kei i tym, jak formatuje kod UI, zawsze wydaje się, że robi naprawdę złą robotę, której przemysł nie chce przestrzegać.Pomocnik maszynki do golenia Składnia Automatyczne formatowanie Brzydkie. Jak naprawić?

Ten przykład wygląda na naprawdę głupiego. I próbuję dowiedzieć się, czy są modów lub sposobów rozwiązania tego problemu. Wygląda naprawdę bardzo źle.

Ktoś wie coś na ten temat? lol

@using Company.Mobile2.Enums 
@helper BidsByShipment(string generatedId, int bidsCount, int activeBidsCount) 
    { 
     if (bidsCount > 0) 
     { 
    <a class="Company-listview-link Company-listview-bids" href="/Shipping/Bids/ByShipment?id={0}"> 
     @if (activeBidsCount > 0) 
     { 
      <text>@bidsCount (@activeBidsCount @GetStr("Company"))</text> 
     } 
     else 
     { 
      <text>@bidsCount</text> 
     } 
    </a> 
     } 
     else 
     { 
    <text>0 @GetStr("Company")</text> 
     } 
} 
+2

Mam ten sam problem i nie znalazłem fajnego sposobu, aby to naprawić :(Często VS umieszcza pojedynczą spację przed moim "{". Zdecydowanie potrzebuje trochę pracy :( –

+0

Tak, to psia śniadanie w porządku, napędza mnie też - zwłaszcza, że ​​został złamany ... –

+2

Chciałbym, żeby VS dało nam opcję nie formatowania kodu UI. – Brian

Odpowiedz

0

Format kodu C# oddzielnie od kodu HTML. Jeśli chcesz uzyskać właściwe wcięcie, po prostu umieść kilka bezużytecznych tagów opakowania tam, gdzie spodziewasz się, że będą wcięcia, a otrzymasz wcięcie. Byłby to jednak anty-wzór.

Oto kod. . Dla funkcji jakbyś zdefiniowała I "Nie jestem pewien, czy to faktycznie działa

@using Company.Mobile2.Enums 
<div> 

@helper BidsByShipment(string generatedId, int bidsCount, int activeBidsCount) 
    { 
     if (bidsCount > 0) 
     { 
     <a class="Company-listview-link Company-listview-bids" href="/Shipping/Bids/ByShipment?id={0}"> 
     @if (activeBidsCount > 0) 
     { 
      <text>@bidsCount (@activeBidsCount @GetStr("Company"))</text> 
     } 
     else 
     { 
      <text>@bidsCount</text> 
     } 
     </a> 
     } 
     else 
     { 
     <text>0 @GetStr("Company")</text> 
     } 
} 
<div> 
+3

Nie widzę, jak to rozwiązałoby problem. Złe wcięcie znajduje się na html, a nie na C#. W jaki sposób umieszczenie tagów opakowania sprawi, że tagi opakowania nadal będą niepoprawnie wcięte? Może mógłby pomóc krótki przykład? – BradLaney

1

Czy masz Visual Studio skonfigurowane do korzystania z zakładki wcięcie to pokazuje błąd formatowania Razor gdzie wstawia spacje zamiast kart, jak powinien. Rozwiązaniem jest przejście do przestrzeni wcięcia.

+0

Używam wcięcia przestrzeni. – BradLaney

0

dla wszystkich ludzi whingeing o wizualne Studio, myślę, że to całkiem imponujące, że pozwala na przełączanie się między HTML i C# bez b eing powiedział, którego języka używasz.

W bardziej praktyczny sposób, myślę, że moja rada to połączenie wielu rzeczy pokazanych powyżej. W szczególności ...

  1. Unikaj używania @: do oznaczania literalnego ciągu znaków HTML. Visual Studio często dodaje wiersz po tym, gdy ponownie sformatujesz swój kod, a nawet jeśli nie, możesz skończyć w nieskończonej rekursji, używając @, aby następnie przełączyć się z powrotem do kodu i tak dalej. Użyj WriteLiteral dla rzeczy nie zakodowanych w znacznikach HTML, jak zasugerowano powyżej; w przeciwnym razie Visual Studio wykryje kod HTML podczas korzystania z a. Jeśli ...
  2. ... używasz fantastycznego pomysłu na wstawianie kodu w bloku @ {...}.

Biorąc pod uwagę te dwa Znalazłem że CTRL K, D, aby sformatować kod dało doskonałe rezultaty dla bloku tabeli, która została doprowadza mnie do szaleństwa:

<table> 

<tr> 
    <th>Chapter</th> 
    @*<th class="woCoursewareFindTd">Page count</th>*@ 
    <th>Contents</th> 
</tr> 

@{ 
    foreach (var c in Model.Chapters) 
    { 
     if (c.Courseware2Id == c2.Courseware2Id) 
     { 
      <tr> 
       <td> 
        @{ 

         if (c.ChapterFileName.ToString().ToLower() == "none") 
         { 
          WriteLiteral(c.Courseware3Name); 
         } 
         else 
         { 
          <a href="@c.Href">@c.Courseware3Name (click to download)</a> 
         } 
        } 
        <p>(@c.PageCount [email protected](c.PageCount == 1 ? "" : "s"))</p> 
       </td> 

       <td> 
        @Html.Raw(c.SectionText) 
       </td> 
      </tr> 
     } 
    } 
} 

Perfect! Podziękowania dla wszystkich współpracowników StackOverflow powyżej.

Powiązane problemy