2016-11-10 4 views
-1

は、以下のコードを参照してください:あなたは上記を参照できるように、私は、グローバル変数はタプルのリスト、<string, string>を含むpropertyListと呼ばれていの取り込みグローバル変数

@{ 
    var propertyList = new List<Tuple<string, string>>(); 
} 

<input type="text" data-id="@item.Item1" class="form-control prop"/> 

<a class="btn btn-default" id="run-report" href="@Url.Action("RunReport", "Reports", new {reportId = Model.ReportId, propList = propertyList})"> Run Report</a> 

<script> 
    $("#run-report").click(function() { 
     $(".prop").each(function() { 
      var currentProp = $(this).attr("data-id"); 
      var currentPropVal = (this).value; 

      @{ 
       propertyList.Add(new Tuple<string, string>("", "")); 
      } 

     }); 
    }); 

</script> 

Url.Actionを使用してコントローラのアクションからブラウザに直接レポートをダウンロードする必要があるため、ここでこれを宣言します。

私はテキストボックスから値を取得するときに少し壁に当たっています。自分のjQueryの値をグローバルなタプルリストに追加する必要があります。

私はこのようにはできません。

アドバイスをいただければ幸いです!

おかげ

+1

クライアント側とサーバー側のコードが混在しています。サーバー側のコード '@ {}'は、ブラウザに到達する前に実行され、その時刻以降は変更できません。 –

+1

Razorが最初にコンパイルしたことを考慮に入れて、サーバーでjQueryがブラウザで実行されます... –

答えて

1

@{}コードは、サーバー側を実行し、それがブラウザに到達する前にことを覚えておいてください。ブラウザで「レンダリング」されると、プレーンテキストであるかのようになり、変更することはできません。

あなたは例えば、スクリプトでそれらを構築することにより、あなたのパラメータを渡すことができます。

Url.Action引数

<input type="text" data-id="@item.Item1" class="form-control prop"/> 
<a class="btn btn-default" id="run-report" href="@Url.Action("RunReport", "Reports", new {reportId = Model.ReportId})"> Run Report</a> 

からのparamを削除するには応じてスクリプトを経由して

$("#run-report").click(function() { 

    var url = $(this).attr("href"); 

    $(".prop").each(function() { 
     var currentProp = $(this).data("id"); 
     var currentPropVal = (this).value; 

     url += "?" + currentProp + "=" + currentPropVal; 
    }); 

    location.href = url; 
}); 

それらを追加します。あなたの行動が期待するフォーマットでは、あなたのURLの構築方法を変更する必要があるかもしれませんが、これは原則を示しています。

関連する問題