にロードする複数のJavaScriptのスクリプトを防止、私はこのPrimitiveViewComponent
を持っています関数sayHello
が3回含まれるため、あいまいさがありますが、これは必須ではありません。は、例えばAsp.NetコアViewComponents
ViewComponentsのJavaScript関数をどのように定義する必要がありますか。複数回それらを含むことができないようにするにはどうすればいいですか?
にロードする複数のJavaScriptのスクリプトを防止、私はこのPrimitiveViewComponent
を持っています関数sayHello
が3回含まれるため、あいまいさがありますが、これは必須ではありません。は、例えばAsp.NetコアViewComponents
ViewComponentsのJavaScript関数をどのように定義する必要がありますか。複数回それらを含むことができないようにするにはどうすればいいですか?
この問題を管理する方法はサーバー側にあるとは思いません。しかし、JavascriptとJQueryを使ってこの問題を解決できます。
このコードでは、スクリプトをwwwrootのjsフォルダのscripts.jsファイルに移動しました。ページを読み込んでいるときにSayHelloが関数か未定義かをチェックしていますが、関数であればページにロードされていることを意味し、定義されていない場合はJScriptのgetscriptメソッドを使用してスクリプトをロードしています。
ここにビューコンポーネントコードがあります。
<button type="button" onClick="sayHello()">Hello</button>
<script>
if (typeof sayHello !== 'function') {
$.getScript("/js/scripts.js").done(function(script, textStatus) {
console.log(textStatus);
});
}
</script>
はそれが私がスクリプトがモデルに含まれているかどうかを指定しをScriptIncluded、およびサーバ側でプロパティの状態を維持するようにあなたは、プロパティを定義するべきだと思い
をお役に立てば幸いです。このようなコンポーネントを呼び出す真のたびにするかどうかをScriptIncludedプロパティを確認してください:あなたのコンポーネントクラス定義で
<button type="button" onClick="sayHello"></button>
@if(model.ScriptIncluded){
<script>
function sayHello(){
}
</script>
}
をコンポーネントが初めて呼び出されていない場合、あなたはmodel.ScriptIncluded = True;
を設定する必要があります。あなたはHttpContext.Items
にブール値を保つことができます。
'$ .getScript(" /js/scripts.js ")'がWebアプリケーションの潜在的なセキュリティホールになる可能性がありますか?はいの場合、どうすればそれを保護できますか? –