2017-01-10 4 views
0

ボタンをクリックすると部分ビューを読み込もうとしています。各ボタンにはそれ自身のcommodityCodeの値があります。そのため、一度クリックすると部分ビュー内で異なる結果が生成されます。MVCパーシャルビューボタンパラメータ

私の問題は、ボタンがクリックされたときに、部分的に返される唯一のものであるということです。その代わりに、ボタンが配置されているページと同じページに、さらに部分的にロードする必要があります。部分的なコントローラにパラメータとして渡している変数は、foreach(var item in Model.commodities)コード(以下参照)から取得されているので、私はajax.load()アクションアプローチを使用することはできません。私はそこからデータを渡す方法はないと思います。モデルをforeachループを経由してjQuery、次にコントローラに送信します。 jQueryではなくC#を使用して部分ビューをロードするページの場所を指定する方法はありますか?

@foreach (var item in Model.commodities) 
{ 
<tr> 
    <td> 
    <a class="arrow_button" href='@Url.Action("TliSelect", "Commodity", new { tariff = ViewBag.scac, commodityCode = item.commodityCode })'> 
      <img style="width:15px; height:15px;" src="@Url.Content("/Content/images/expand-sm.png")" /> 
    </a> 
    </td> // Continued... 

答えて

1

新しいページにリダイレクトするリンクを生成しています。 ajaxを使用して、TliSelect()メソッドによって返された部分ビューで現在のページを更新する必要があります。

変更リンク(ボタン)commodityCode値のためdata-属性を含むように、それはあなたのスクリプトに格納し、検索できるように

<a class="arrow_button" href="#" data-code="@item.commodityCode">....</a> 

その後、スクリプトが

var url = '@Url.Action("TliSelect", "Commodity")'; 
var tariff ='@ViewBag.scac'; 
var container = $(yourElement); // the element where you want to append the partial 
$('.arrow_button').click(function() { 
    var code = $(this).data('code'); 
    container.load(url, { tariff: tariff, commodityCode: code }); 
}); 

場合、またはになります部分部分を続けて追加したい場合は、

$.get(url, { tariff: tariff, commodityCode: code }, function(html) { 
    container.append(html); 
}); 
0123と置き換えてください。

これは、TliSelect()メソッドが部分的なビューを返すことを前提としています。

+0

優れたソリューション。ありがとうございました。 – Versatile