私はmvcが初めてです....ただ学んでいます。人々registerclientscript or registerstartup
はasp.net Webフォームで使用して、サーバー側のメソッドからクライアント側でJavaScriptを発行します。クライアント側でコントローラーのアクション メソッドから JavaScript を発行できる方法がいくつあるかを知りたいです。可能であれば、理解を深めるためにコードスニペットを使用してすべての方法について話し合ってください。ありがとう
1 に答える
コントローラーからJavaScriptを放出しないでください。JavaScriptは、サーバーの観点からのUIに縛られた概念であり、ビューに属します。
ビュー自体に直接配置することも、ビュー.js
によって参照される別のファイルに配置することもできます。(または、多くのビューに配置する必要がある場合は、レイアウト。)
コントローラーから JavaScript を発行すると、コントローラーがビューに緊密に結合されます。ASP.NET MVC フレームワーク (または一般的には MVC パターン) を使用する主な理由の 1 つは、コードとプレゼンテーションの間の結合を減らすことです。
RegisterStartupScript
そもそも WebForms は、多くの場合、設計上の選択として不適切であるとさえ言えます。WebForms でも、クライアント側の UI にバインドされた懸念は.js
、ページ (またはマスター ページ) によって参照されるページまたはリソース ファイル (この場合はファイル) に属します。クライアント側のコードは、サーバー側の構造によって不必要に隠されるべきではありません。
編集:この回答に追加したコメントに基づいて、サーバー側のロジックに基づいて JavaScript のブロックを条件付きで表示/非表示にする場合は、ビューでそれを行います。たとえば、ビューには次のようなものがあります。
<!-- some HTML and other things up here -->
@if(Model.SomeCondition)
{
<script type="text/javascript" src="someJSFile.js"></script>
}
<!-- some HTML and other things down here -->
この場合、含まれている JavaScript はSomeCondition
、モデルが true の場合にのみブラウザーにレンダリングされます。したがってSomeCondition
、内部ロジックに基づいてブール値を返すモデルのプロパティになります。(ビュー自体でロジックを直接定義することもできますが、一般的には、できるだけ多くのロジックをモデルに保持し、ビューをモデルに公開された値に直接バインドするのが最善です。)