72

メインページに2つの部分が含まれるWebアプリに取り組んでいます.常に表示される定数ブロックと、3つの部分ビューの1つで構成される情報ブロックです。各部分ビューは、AJAX 要求の結果として表示され、一度だけ読み込まれます (その後、jquery によってウィンドウの切り替えが提供されます)。うまく機能しますが、1つの問題に直面しました。

部分ビューの html コードには、定数ブロックと情報ブロックでも使用される js 関数が含まれています。ページが読み込まれると、これらの関数はお互いを「認識」して機能しますが、resharper は関数宣言を見つけることができず、これについて警告することができません。コードで見つかるかみそりの構文のため、それらを外部jsファイルに転送しても問題を解決できません。

これで何ができますか?

ありがとう。

アップデート:

最後に、js コードをビューから分離する問題を解決することにしました。したがって、新しい質問は、かみそりの構文を js ファイルに含める方法、または受け入れ可能な代替手段は何かということでした。私が見つけた一般的なソリューションは、グローバル変数、データ属性、および私がより気に入っているもの、John Katsiotis による RazorJS ライブラリを使用するものです。

http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files

安定して動作し、Resharper を満足させてくれることを願っています。

乾杯!

アップデート:

3 年後、私はこの質問を思い出し、自分の経験に基づいて更新することにしました。実際、そのために追加のライブラリを使用することはお勧めしません。特に、プロジェクト チームのメンバーがあなただけではない場合... すべてのライブラリが作成者とコミュニティによってサポートされ、IDE に簡単に統合できることが保証されている場合 (たとえば、特別な構文を使用している場合) は、はるかに優れています。 . また、あなたのチームのすべての人は、それがどのように機能するかを認識している必要があります. したがって、次のことを行うことをお勧めします。

  1. すべての JS を別々のファイルに保持します。できるだけ隔離してください。そのための外部 API を提供します。
  2. ビューから API 関数を呼び出します。
  3. Razor で生成されたすべての URL、テキスト メッセージ、定数をリソース パラメーターとして渡します。

例えば:

js ファイル:

$.api.someInitFunction = function(resources){ ... }

意見:

<script>
    $.api.someInitFunction({
        urls: { myAction: '@Url.Action("MyAction", "MyController")' },
        messages: { error: '@errorMessage' },
        consts: { myConst: @myIntConst }
    });
</script>
4

5 に答える 5

40

Resharper が警告を表示しても、大したことではありません ^_^

しかし、もし私があなたなら、部分ビューに JavaScript をまったく入れません

部分ビューは 1 つのページに何度も挿入される可能性があるため、JavaScript で問題が発生します。

また、JavaScript を JS ファイルに分離できなかった場合は、別の PartialView を作成し、これらのスクリプトをその中に入れて、メイン ページにレンダリングするだけです。

于 2012-06-19T11:00:54.937 に答える
4

私は、JavaScriptを部分的またはその他の方法でビューに配置するべきではないというWahidに同意します。私はこれを行うのに十分なコードを見てきましたが、それが役に立たないだけであることを知っています。

また、Razor構文にカプセル化されたロジックをJavaScriptに転送できるはずです。必要なのは、ロジックに必要な情報をJavaScriptに渡すことだけです。

この次のコメントの経験から推測していますが、JavaScriptは、C#またはVB.NETコードの構造を設計するのと同じ方法で設計する必要があります。そうすれば、Razorを使用しているロジックをJavaScriptの一部にする必要があります。

そうすれば、JavaScriptの保守が容易になり、Resharperもより幸せになるはずです。

于 2012-06-19T11:14:58.430 に答える