4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[ASP.NET Core] Razor構文のコメント文の違い

Posted at

本題

ASP.NET Coreで作成するページはRazor構文で書かれ、コメントの書き方が2種類ある。

<!-- -->で括る方法と @* *@で括る方法だ。

<!-- コメント1 -->
@* コメント2 *@

どちらも実動作上は存在しないものとして解釈されるが、解釈されるタイミングが違う。
上記コメント1のほうはブラウザで解釈される一方、
コメント2のほうはASP.NET Coreのコンパイラーで解釈される

したがって前者はコンパイル後のHTMLに残り、後者はHTMLに残らない。
以下のようなソースコードをコンパイルして実行すると、

Index.cshtml
<!-- とても愛想の良い表情を浮かべながら -->
<h2>太郎さんってモテそうですよね!</h2>
@* (嘘。絶対にない。生理的に無理。) *@

以下のようなHTMLコードが出力される。

Index.html
<!-- とても愛想の良い表情を浮かべながら -->
<h2>太郎さんってモテそうですよね!</h2>

したがって、<!-- -->で書いたコメントはブラウザのソースコードを表示する機能でばっちり見られる。
隠しておきたい本音とか、陰口とか、設計仕様などは @* *@でしたためるのがいいだろう。
スクリプト部分への適用

あと、@* *@のほうは.cshtmlファイル上のスクリプトにも有効。

MyScript.cshtml
<script>
  // これはブラウザに表示される
  @* これはブラウザに表示されない *@
  alert("生理的に無理!!!");
</script>

ショートカットキーについて

ちなみにVisual Studioのショートカットキーで、
Ctrl + k,Ctrl + cと打つと現在の行または選択箇所がコメントアウトされるが、
.cshtmlの場合 <!-- -->になったり@* *@になったりする。

@* *@のコメントとそれ以外のものをまとめて範囲選択してショートカットキーでコメントアウトすると前者のコメントになり、それ以外の選択範囲だと後者のコメントになる
・・・ことが多い。詳しい条件は知らない(検証もしていない(する気もない))。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?