これまでカートに商品を追加するときにポストバックなしでサイトを反応させました(は、Product.Id
をJQueryのクッキーに追加します)。ポストバックなしでウェブサイトを反応させるには?
ユーザーがCart/Checkoutページにアクセスすると、コントローラのCookieからすべてId
を読み込み、すべてのレコードをcartList
に入れて、それをビューに渡します。
私はカートから製品を取り除きたいときにポストバックなしでそれを解決する方法を知らないので、私は立ち往生しています。ビューの
cartList.Remove(db.Products.SingleOrDefault(x=> x.Id == /*Id to remove from cart*/));
:
は、それは次のように対応する/似た何かをすることは可能ですか?マイコード:
は、私はjQueryを使ってクッキーにProduct.Id
を追加(は、foreachループからIDdata-id="@item.ID"
を取得します):
$('.add-to-cart').click(function() {
if ($.cookie("AddedProductId") != null) {
var previousValues = $.cookie("AddedProductId");
$.cookie("AddedProductId", previousValues + '_' + $(this).data('id'));
}else{
$.cookie("AddedProductId", $(this).data('id'));
}
});
これは私が追加の製品とcartList
を維持する方法です、カート/チェックアウトページにアクセスしたときの内部コントローラ:
public ActionResult Cart(){
var cart = Request.Cookies["AddedProductId"].Value;
String[] elements = Regex.Split(cart, "_");
List<Product> cartList = new List<Product>();
foreach (var item in elements){
cartList.Add(db.Products.SingleOrDefault(x => x.ID == new Guid(item)));
}
return View(cartList);
}
foreach
ループ内にすべて/Cart/View
を表示します。
これをAsp.Net MVCで解決する最適な方法は何ですか?
私はそれを動作させることができない、私もにブレークポイントを設定私のコントローラとそれは 'Remove'メソッドには向いていません。これは正しく行われます: 'data:$(this).data( 'id')'?私は "//あなたのコード..."の部分に何を入れると思いますか? – fagol
'@ Url.Action(" Remove "、" Cart ")'メソッドを使用すると、これは正しいパスを返します。 アプリケーションが[アプリケーションパス](https://msdn.microsoft.com/en-us/library/system.web.httprequest.applicationpath(v = vs.110).aspx)で構成されている可能性があります。 '// your code'には、正しい方法で削除された場合に実行されるアクションがあります。 – karritos
ありがとうございます! – fagol