コードが以下のスニペットに似ている JavaScript 関数内の ac# 変数値にアクセスしたいと思います。
@{
var i=0;
}
....
<script type="javascript">
function MyObjects(e) {
for (j = 0; j <= @i; j++) {....}
</script>
.....
{
i=@i+1;}
コードが以下のスニペットに似ている JavaScript 関数内の ac# 変数値にアクセスしたいと思います。
@{
var i=0;
}
....
<script type="javascript">
function MyObjects(e) {
for (j = 0; j <= @i; j++) {....}
</script>
.....
{
i=@i+1;}
C# コードはサーバー側で実行されて HTML をレンダリングし、生成された JavaScript を含む HTML はクライアント ブラウザーで実行されるため、JavaScript から C# 変数に "アクセス" することはできません。
クライアントで実行される JavaScript コードに C# 変数の値をレンダリングする場合、コードは
for (j = 0; j <= @i; j++) {....}
それだけです。
ただし、期待するなら
{ i=@i+1;}
クライアントで実行してサーバーの状態に影響を与えることはできませんが、そうではありません。
解決
HTML ページをサーバーに戻さずに JavaScript からサーバー上の何かの状態を更新する必要がある場合は、Ajax コールバックを使用してそれを実行できます。
C#/Razor の値を文字列として簡単に取得できます。
<script type="text/javascript">
var i = parseInt("@i");
</script>