ASP.NET core 6 razor pages で、
_Layout.cshtml のラジオボタンをクリックしたとき選択によって表示する値を変更し、
その値を Index.cs に渡し、且つ、Index側で処理が走っても _Layout.cshtml の表示されている値は保持したい。
html
<!-- _Layout.cshtml --> <style type="text/css"> .bkclrA { background-color: #0073b0; } .bkclrB { background-color: #f7ca79; } .bkclrC { background-color: #00a565; } </style> <script type="text/javascript"> function rdoChg() { var chgNo; let rdoval = document.getElementsByName('rdo'); let len = rdoval.length; for (let i = 0; i < len; i++) { if (rdoval.item(i).checked) { chgNo = rdoval.item(i).value; } } var hpnm; document.getElementById('hddiv').classList.remove("bkclrA"); document.getElementById('hddiv').classList.remove("bkclrB"); document.getElementById('hddiv').classList.remove("bkclrC"); if (chgNo == '1') { document.getElementById('hddiv').classList.add("bkclrA"); hpnm ="1111"; } else if (chgNo == '2') { document.getElementById('hddiv').classList.add("bkclrB"); hpnm ="2222"; } else if (chgNo == '3') { document.getElementById('hddiv').classList.add("bkclrC"); hpnm ="3333"; } return hpnm; } </script> <div id="hddiv"> <label id="rdoNm"></label> <input type="radio" name="rdo" id="rdo1" value="1" onchange="rdoChg()">aaa <input type="radio" name="rdo" id="rdo2" value="2" onchange="rdoChg()">bbb <input type="radio" name="rdo" id="rdo3" value="3" onchange="rdoChg()">ccc </div>
c#
//Index.cshtml.cs public void OnGet() { //ここで _Layout.cshtml の javascript の hpnm の値を取得したい。 //OnGet() が難しければ他のイベント時に取得したい }
以上、宜しくお願いします。
Razor Pages なら ASP.NET MVC Framework のタグは不適切です。ASP.NET というタグがあるのでそれに替えてください。
サーバー側の話とクライアント側の区別がついてないようで、不可能なことをしているような感じがします。何故「ViewData["hoge"] に入れて」というサーバー側の話に、クライアント側の JavaScript の話が出てくるのですか? 全体的に何がしたいのかのストーリー・シナリオを書いてください。
ご回答ありがとうございます。
やりたいことは、Layout に ラジオボタンを置いて、
まず一つ目の処理として選択したvalue値をLayoutに表示する為に javascripit で処理しました。
(もう一つやりたい事:選択した値によってヘッダの background-color を変えたい)
そのvalue値を Index.cshtml に渡したいのです。
..
ASP.NET というタグがあるのでそれに替えてください・・・とお願いしましたが?
> やりたいことは、Layout に ラジオボタンを置いて、まず一つ目の処理として選択したvalue値をLayoutに表示する為に javascripit で処理しました。
それは期待通り動くのですよね。であれば、そのコード (_Layout.cshtml と Index.cshtml )を質問欄にアップしてください。長くなる場合は簡単なサンプルでお願いします。
そこからどうしたいのかを、そのコードをベースに説明願います。
まだ回答がついていません
会員登録して回答してみよう