1

私も最近、テスト駆動開発に切り替えた後、コードの品質と保守性を向上させるためにビューの作成を開始しました。

これは非常に役に立ち、コンパイラは、名前が変更された変数などに関して、私のビューにいくつかの欠陥を特定しました。

ただし、ソリューションを構築するときに、いくつかの誤検出が見られます。以下は、以前は実行時に問題なく動作していたが、現在はコンパイルできないコードの例です。

<script type="text/javascript">
var url = null;

@{
    Html.Raw("url = 'doesnt work';");
}

url = "@Url.Action("DoesNotWorkEither")";

</script>

最初にビューを構築せずにサーバー上で実行すると、これが実際に実行されることを覚えておいてください!

受信したエラー

  • コードに無効な文字があります@{

  • 期待される ';' コードでurl = "@Url.Action("DoesNotWorkEither")";

これらのエラーを解決するにはどうすればよいですか?

更新 1

このエラーを無視することは、私にとって選択肢ではないことに注意してください。ご覧のとおり、ビルドすることさえできません (ビューのビルドを有効にしたためです)。これは、ゲート チェックインを行っているビルド サーバーでもビルドに失敗することを意味します (ビルドしてテストを実行する前にチェックインを送信することはできません)。

更新 2

回答へのコメントで説明されたように、これは明らかに無視できる Visual Studio パーサー エラーです。実際、ビルド サーバーはビューもビルドし、ビューに具体的なエラーがあるかどうかを通知しますが、誤検出は無視します。

4

1 に答える 1

3

これらのエラーは、Razor を認識しない Visual Studio の Javascript パーサーから発生します。
それらはビルドシステムとは何の関係もありません。

それらは安全に無視できます。

次のように、コメントと文字列リテラルを使用して、Javascript パーサーから Razor コードを非表示にすることができます。

<script type="text/javascript">
var url = null;

/*@{ 
    Html.Raw(" *"+"/ url = 'doesnt work'; /*");
} */

url = '@Url.Action("DoesNotWorkEither")';

</script>

より良い回避策は<script>、必要なデータを含むタグを発行する拡張メソッドを作成し、<script>.

于 2012-05-03T13:43:08.903 に答える