2016-04-25 7 views
0

私はmvcアプリケーションでresharperでビジュアルスタジオ2015を実行しています。私は、ネストされたdivタグのセットを作成するビュー、ラを持っている:ビジュアルスタジオ2015、resharper、カミソリと書式設定埋め込みhtml

<div> 
    <label>... 
    <div> 
     <label>... 
     <label>... 
     <label>... 
    </div> 
    <div> 
     <div> 
      <label>... 
      <label>... 
     </div> 
     <label>... 
     <label>... 
    </div> 
</div> 

私は

お知らせグラグラ<text></div></text>ブロックEDIT

<div class="content"> @{ var count = 0; var depthList = new Stack<int>(); <text> <div class="NestedSelect"> </text> foreach (var category in Model.OrderBy(m => m.LeftLink)) { if (depthList.Count == 0) { depthList.Push(category.Depth); <text> <label> <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> </label> </text> } else if (category.Depth > depthList.Peek()) { depthList.Push(category.Depth); <text> <div> <label> <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> </label> </text> } else if (category.Depth == depthList.Peek()) { <text> <label> <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> </label> </text> } else { while (category.Depth < depthList.Peek()) { depthList.Pop(); //@@@@ <text> </div> </text> } <text> <label> <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> </label> </text> } //@@@@ <text> </div> </text> count++; if (count == 0) { } } } </div> 

のようなコードを持っています(//@@@@とマークされています)。 VSおよび/またはresharperは私の閉鎖divタグは仲間を持っていないように非常に出しています。オープニング<text>タグはエディタでハイライト表示されますが、末尾には</text>タグはありません。エラーにアンダーラインがあり、ツールチップ「終了タグに一致する開始タグがありません」が表示されます。

@:コンストラクトを使用しようとしましたが、コードがフォーマットされると、@:が単独で行頭に置かれ、裸のhtmlタグと混同されます。

これでどのようにネストされたhtml構造を構築できますか?

答えて

1

ここで@:構造体は、問題の原因となっているタグのみで使用する必要があります。あなたはフォーマットに取りつかれていない場合は、@:構文を使用する必要があります

<div class="content"> 
@{ 
    var count = 0; 
    var depthList = new Stack<int>(); 

    <text> 
     <div class="NestedSelect"> 
    </text> 

    foreach (var category in Model.OrderBy(m => m.LeftLink)) 
    { 
     if (depthList.Count == 0) 
     { 
      depthList.Push(category.Depth); 

      <text> 
       <label> 
        <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> 
       </label> 
      </text> 
     } 
     else if (category.Depth > depthList.Peek()) 
     { 
      depthList.Push(category.Depth); 

      @:<div> 
       <text> 
         <label> 
          <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> 
         </label> 
       </text> 
     } 
     else if (category.Depth == depthList.Peek()) 
     { 
      <text> 
       <label> 
        <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> 
       </label> 
      </text> 
     } 
     else 
     { 
      while (category.Depth < depthList.Peek()) 
      { 
       depthList.Pop(); 
       @:</div> 
      } 

      <text> 
       <label> 
        <input type="radio" name="categories" value="@category.Id"><span>@category.Name</span> 
       </label> 

      </text> 
     } 
      @:</div> 

     count++; 

     if (count == 0) 
     { 
     } 
    } 
} 

+0

感謝。これは、再構造化された「コードクリーンアップ」まで、主に動作します。それでも、通常は '@:'をそれ自身の行に置き、エスケープされたタグを裸にします。 –

1

はこのような何かを試してみてください。

@: </div> 

あなたがいる場合は、WriteLiteralを使用して検討してください。

WriteLiteral("</div>"); 
関連する問題