あなたはViewBagの仕組みを誤解しています。
MVCで働いて、そしてあなたがWebページを開くと、これは何が起こるか(およそ)である:
- FooControllerのメソッド「インデックス」が実行されます。最後に、Viewが返されます。
- MVCアプリケーションはビューを見つけ、関連する.aspxファイルで見つかったHTMLに従ってレンダリングを開始します。プログラムが "@ ViewBag.Id"のような項目に遭遇すると、基本的に ".Id"値が何であれ、文字列を置き換えます。 (それはそれより少し複雑ですが、議論のために、基本的に文字列を置き換えます)。
- レンダリング後、HTMLドキュメントがブラウザに送信され、ブラウザに表示されます。
ブラウザがページを取得するまでに、あなたのViewBagは基本的に「範囲外」になっています。これは、あなたのASP(MVC)アプリケーションがViewBagを使用しているためですが、Javascriptはウェブブラウザ文書内のスコープを持っているだけです(これはブラウザに戻されたHTMLコード、範囲外です.JavascriptはMVCアプリケーションの一部ではなく、結果のWebページだけです。
これは簡単な答えではありません。 。 あなただけのHTMLページではなく、他の方法で回避にViewBag値を置くことができる
あなたのIdは、ASPXファイルに次のコード5であると仮定します。
$(".btn").on("click",function(){
@ViewBag.Id = $(this).attr("id")
});
は、お使いのブラウザは唯一、この最後の部分を見ているので、それだけでJavaScriptで意味がありません
$(".btn").on("click",function(){
5 = $(this).attr("id")
});
としてブラウザに送信されます。あなたの場合、構文エラーでは、変数が初期化されておらず、null
にアクセスしようとしているだけです。
私はエラーを入力するのを忘れています。 –
おそらく '@ ViewBag.Id'はどこかに定義されていないので、何も出力されません(エラーではなく)ので、割り当ての左側は何もありません。コードをチェックして、 '@ ViewBag.Id'が宣言されている場所を確認してください。 – Bojangles