質問したいのですが、jqueryを使用してviewbag値を動的に設定する方法はありますか?スクリプトでこのコードを試します
$(".btn").on("click",function(){
@ViewBag.Id = $(this).attr("id")
});
正しいかどうかはわかりませんが、MVC 3プロジェクトを実行しようとすると、このエラーがfirebugに表示されます
Syntax Error
= $(this).attr("id")
助けてください。ありがとう
ViewBagの仕組みを誤解しています。
MVCで作業しているときにWebページを開くと、これが(大体)起こります。
ブラウザがページを取得する頃には、ViewBagは基本的に「範囲外」になっています。これは、ASP(MVC)アプリケーションがViewBagを使用しますが、JavascriptはWebブラウザードキュメント内にのみスコープを持っているためです(これはブラウザーに返されたHTMLコードですbyアプリケーション、後 ViewBagは範囲外になりました。JavaScriptはMVCアプリケーションの一部ではなく、結果のWebページのみです。
簡単に言えば、そのようなことはできません。インライン文字列置換を行うと考えてみてください。 ViewBag値はHTMLページにのみ配置でき、その逆はできません。
Idが5、aspxファイル内の次のコードであるとします。
$(".btn").on("click",function(){
@ViewBag.Id = $(this).attr("id")
});
としてブラウザに送信されます
$(".btn").on("click",function(){
5 = $(this).attr("id")
});
ブラウザはこの最後の部分しか表示しないため、Javascriptでは意味がありません。あなたの場合、構文エラーでは、変数が初期化されていないことを意味し、null
にアクセスしようとしています。