2011-06-23 19 views
35

所以我只是用Visual Studio格式剃鬚刀代碼的方式吃牛肉。我一直在使用visual studio時遇到一些問題,以及它如何格式化UI代碼,它似乎總是做一個真正的超級糟糕的工作,業界不希望遵循。Razor Helper語法自動格式化醜。怎麼修?

所以這個例子看起來真的很愚蠢。我試圖找出是否有mods或方法來解決這個問題。它看起來真的很糟糕。

任何人都知道這件事?大聲笑

@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

我有同樣的問題,並沒有發現一個很好的辦法解決它:(通常VS把一個單一的空間在我的「{」。這肯定需要一些工作:( –

+0

是的面前,這是狗的早餐好吧驅使我堅果太 - 特別是因爲它被打破foreve [R ... –

+2

祝VS只是給我們的選項,不是在所有的格式UI代碼[爲什麼不Visual Studio代碼格式正常工作爲 – Brian

回答

0

C#代碼格式與HTML代碼分開。如果你想要正確的縮進,那麼只需要放置一些無用的包裝標籤,無論你希望縮進哪裏,都會得到縮進。這將是一個反模式。

這是代碼。對於像你這樣定義我的函數「不能肯定,如果實際工作

@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

我不明白這甚至可以解決問題。不好的縮進是在html上,而不是在c#上。那麼如何將封裝標籤解決這個問題,封裝標籤仍然會被錯誤地縮進?也許一個簡短的例子會有幫助? – BradLaney

1

你有Visual Studio中設置爲使用選項卡縮進?這揭示了一個剃鬚刀格式錯誤,這錯誤插入空格,而不是製表符,因爲它應該。解決辦法是改用空間縮進。

+0

我使用空格縮進。 – BradLaney

0

對於所有的人whingeing有關Visual工作室,我認爲它非常令人印象深刻,它允許您在沒有b的情況下在HTML和C#之間切換恩告訴你正在使用哪種語言。

在一個更實際的說明中,我認爲我的建議是結合上面顯示的很多東西。具體而言...

  1. 避免使用@:表示HTML的文字字符串。當你重新格式化你的代碼時,Visual Studio經常在它之後添加一行,甚至當它不能以無限遞歸結束時,使用@來切換回代碼,等等。如上所示,使用WriteLiteral表示未在HTML標記中編碼的東西;否則Visual Studio將在您使用a時檢測HTML。如果...
  2. ...您使用了在@ {...}塊中插入代碼的奇妙想法。

鑑於這兩個我發現CTRL K,d重新格式化代碼爲給已經快把我逼瘋了一個表塊完美的結果:

<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> 
     } 
    } 
} 

完美!感謝上面所有的StackOverflow貢獻者。