より良いアプローチは、動的な JavaScript を可能な限り排除することだと思います。このようなものがうまくいくでしょう:
@{
int badgeCount = ViewBag.badgeCount;
string memberName = "Some Name";
}
<input type="hidden" id="BadgeCount" value="@badgeCount" />
<input type="hidden" id="MemberName" value="@memberName" />
<script type="text/javascript">
var badgeCount = document.getElementById('BadgeCount').value;
var memberName = document.getElementById('MemberName').value;
for (var i = 0; i < badgeCount; i++) {
TrackWonBadge(memberName);
}
</script>
これには、スクリプトがより複雑になった場合に、スクリプトを独自のファイルに移行できるという利点があります。
実際、インラインでスクリプトを作成することはまったくありません。クライアント側でマークアップをロジックから分離しておくために、別の .js ファイルに移動します。これは、ASP.NET MVC がサーバー側で強制的に行うことと似ています。ビューはコントローラーとは別の言語を使用しているため、別のファイルにあります。今はそのようなファイル分離を行いたくない場合でも、動的な JavaScript を作成すると、コードが本番環境で保守中であるため、この最終的な分離が難しくなります。