0

私は現在、正常に動作しているコントローラーへの ajax 呼び出しを行う次のコードを持っています。

@Ajax.ActionLink("Add to Wishlist", "Add", "Wishlist", new { productId = Product.ProductId }, new AjaxOptions { UpdateTargetId = "breadcrumbs", InsertionMode = InsertionMode.Replace, HttpMethod = "Post" }, new { @class = "button" })

ここで、このコードを変更して、ユーザーが製品 ID とともに追加データを追加できるようにする必要があります。

ここでの要件は、「ウィッシュリストに追加」リンクがクリックされたときにモーダル ポップアップを開き、モーダル ウィンドウにドロップダウン リストとテキスト ボックスを表示し、ユーザーがそれらを入力してモーダル ポップアップの送信ボタンをクリックすると、データをコントローラーに送信することです。 .

現在、私のページにはこのような複数のリンクがあり、すべてのリンクには異なる productId があります。

私の最初の問題は、製品 ID をモーダル ポップアップに送信する方法です。

ありがとうアルナブ

4

2 に答える 2

0

Html.ActionLinkヘルパーメソッドを使用して通常のリンクに切り替えます

@Html.ActionLink("Add to Wishlist", "Add", "Wishlist",
                           new { @id=product.ProductId},new { class="modelLink"})

次に、JavaScriptを実行して、このリンクのクリックイベントをリッスンし、ダイアログを開いて、必要なパラメーターを送信します。以下のコードは、モデルポップアップ(jQuery UIダイアログ(つまり、このコードを機能させるにはjQuery UIライブラリを含める必要があります))を開いており、コントローラーのAddアクションメソッドに2つのパラメーターを送信しています。WishList[アクションの追加]メソッドから返すものはすべて、[モデル]ダイアログに表示されます。

$(function(){    
  $('a.modelLink').click(function(){

     var item=$(this);

     var url=item.attr("href")+"&anotherParam=unicorn";

        var dialog = $("#dialog");
        if ($("#dialog").length == 0) {
            dialog = $('<div id="dialog" style="display:hidden"></div>').appendTo('body');
        }
        dialog.load(
            url,
            {}, // omit this param object to issue a GET request instead a POST request, otherwise you may provide post parameters within the object
            function (responseText, textStatus, XMLHttpRequest) {
                dialog.dialog({                       
                    close: function (event, ui) {                            
                        dialog.remove();
                    },
                    modal: true,
                    width: 460
                });
            }
        );
    }); 

});
于 2012-08-10T20:21:01.340 に答える
0

メインビュー(モーダルを起動するビュー)で:

TempData["ProdId"] = <your product id>

モーダル (またはポップアップ) ダイアログで:

var ProdId = (int)TempData["ProdId"]

お役に立てれば。

于 2012-08-10T19:08:28.653 に答える