私は、メイン ページに 2 つの部分 (常に表示される定数ブロックと、3 つの部分ビューのいずれかで構成される情報ブロック) が含まれる Web アプリに取り組んでいます。各部分ビューは AJAX 要求の結果として表示され、一度だけ読み込まれます (その後、ウィンドウの切り替えは jQuery によって提供されます)。正常に動作しますが、1 つの問題に直面しました。
部分ビューの HTML コードには、定数ブロックと情報ブロックで使用される js 関数が含まれています。ページが読み込まれると、これらの関数はお互いを「認識」して動作しますが、resharper は関数宣言を見つけられず、これについて警告します。コード内に Razor 構文があるため、外部 js ファイルに転送しても問題を解決できません。
これで何ができるでしょうか?
ありがとう。
アップデート:
最終的に、js コードをビューから分離する問題を解決することにしました。そこで、新しい質問は、Razor 構文を js ファイルに組み込む方法、または許容できる代替手段は何か、でした。私が見つけた一般的な解決策は、グローバル変数、データ属性、そして私がより気に入っている John Katsiotis の RazorJS ライブラリを使用することです。
http://djsolid.net/blog/razorjs---razor-inside-your-javascript-files を記述します
安定して動作し、Resharper が満足してくれることを願っています。
乾杯!
アップデート:
3 年後、私はこの質問を思い出し、自分の経験に基づいて更新することにしました。実際、今では、そのために追加のライブラリを使用することはお勧めしません。特に、プロジェクト チームのメンバーがあなただけではない場合は... すべてのライブラリが作成者とコミュニティによってサポートされており、IDE に簡単に統合できる (たとえば、特別な構文を使用する場合) ことが保証されている方がはるかに優れています。また、チームの全員がそれがどのように機能するかを知っておく必要があります。そこで、次のことを実行することをお勧めします。
- すべての JS を別々のファイルに保持します。できる限り分離します。そのための外部 API を提供します。
- ビューから API 関数を呼び出します。
- Razor によって生成されたすべての URL、テキスト メッセージ、定数をリソース パラメーターとして渡します。
例えば:
js ファイル:
$.api.someInitFunction = function(resources){ ... }
ビュー:
<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>
ベストアンサー1
Resharper が警告しても大した問題ではありません ^_^
しかし、もし私があなただったら、部分ビューにJavaScriptを一切入れないだろう。。
部分ビューは 1 ページに何度も挿入される可能性があるため、JavaScript で問題が発生します。
そしてあなたの場合、JavaScriptをJSファイルに分離できなかった場合は、別の PartialView を作成し、そこにこれらのスクリプトを配置して、メイン ページでレンダリングするだけです。