2016-10-26 8 views
-1

現在、セッションに値を渡すビューがあります。これを実現するために、特定のボタンをクリックするたびに呼び出されるJS関数を作成しました。この関数は、パラメータとしてインデックス番号を受け取り、ビューに渡されたモデルから相対オブジェクトを取得し、ビューページのオプションリストから選択した独自の量を取得し、両方をセッションに割り当てます。私が直面している問題は、JavascriptとC#を正しく混在させる方法を理解できないことです。現在の状況では、私は、コンソールから次のようなエラーを受信して​​います:ASP.NET MVC - JS関数内でC#を使用しようとすると無効な代入が発生する

function setItemToSession(index) { 

     '0' = index; 
     var selectedValue = document.getElementById(("quantitySelection" + index)).nodeValue; 
     var itemSelected = B2BCommerceThesis.Models.ViewModels.ShoppingItem; 
     '' = itemSelected; 
     '' = selectedValue; 


     alert("Everything works great with index: " + index); 
     return; 
    } 

ビュー内の相対的なコードは次のとおりです:

アプリケーションによって生成され、次のHTMLを指し

ReferenceError: invalid assignment left-hand side

<script type="text/javascript"> 

    function setItemToSession(index) { 

      @indexSelected = index; 
      var selectedValue = document.getElementById(("quantitySelection" + index)).nodeValue; 
      var itemSelected = @Model.shoppingItems[indexSelected]; 
      '@Session["ShoppingCart"]' = itemSelected; 
      '@Session["itemQuantities"]' = selectedValue; 


      alert("Everything works great with index: " + index); 
      return; 
     } 


    </script> 

ここで、indexSelectedは、.cshtmlの先頭に定義されたグローバル変数です。
私はそれが愚かな疑問だと知っていますが、この問題を効率的に処理する標準的な方法を見つけることはできません。どうすれば解決できますか?前もって感謝します。

+0

でデータを保持します。 Ajaxリクエストを作成する – Satpal

答えて

0

クライアントでJavaScriptのサーバーサイドセッションを変更しようとしていますが、これは不可能です。

セッションを変更したい場合は、あなたがJavaScriptで/更新 `Session`を割り当てることはできませんMVCやWEBAPIの呼び出しを行う必要があるか、クライアントのlocalStorageを

+0

あなたは正しいです、選択した製品を渡すWebApi Callを使用して、ショッピングカートが更新された製品リストを更新します。 – Gab

+0

か、隠しフィールドを使用して '@ indexSelected = index;ではなく値を維持することができます$( '#hiddenFildId')を使用できます。val(index); –

+0

@RKSharmaこれも良い解決策です。私はその数量でアイテムIDを取得し、ショッピングカートにアクセスするたびにデータベースから取得します。ありがとうございました! – Gab

関連する問題