2017-12-11 17 views
2

私は自分のウェブサイトを開くユーザーにIDを渡し、サービスにサインアップしていなくても「ショッピングカート」にいくつかのアイテムを追加します。追加するだけで、チェックアウトするときにサインアップしてください。そして、彼らが物を追加した後にチェックアウトに行かない場合、ブラウザを閉じて2日後に戻ってきて、データベースから前の注文を取り戻したい。データベース上のデータを覚えている匿名ユーザーにIDを与える方法はありますか?

ユーザーに固有のこのIDはどのようにして提供するのですか?次回訪問時にこのIDを覚えていますか?

私はクッキーを使用する必要があると想定していますが、どのくらい正確にわかりませんか?

+1

クッキーまたはhtml5 localstorage – Niladri

+0

私が言ったように、私はクッキーを使う必要があると思っていますが、どのように使って、どうやってasp.netで使うのですか? –

+0

あなたはウェブフォームを使用していますか? – Niladri

答えて

0

私はクッキーやデータベースを使用して似たようなを行っています。したがって、C#では、バスケットテーブルを持つことができ、そのテーブルにProductIdカラムとUserIdカラムがあります。その後、あなたのコントローラから、UserIdがデータベース内にあるユーザーバスケットを取得します。

クッキーの設定:コントローラにクッキーを取得するために、次に

string cookieValue = Guid.NewGuid().ToString(); 
//Creating a cookie which has the name "UserId" 
HttpCookie userIdCookie = new HttpCookie("userId"); 
userIdCookie.Value = cookieValue; 
//This is where you would state how long you would want the cookie on the client. In your instance 2 days later. 
userIdCookie.Expires = DateTime.Now.AddDays(3); 
Response.SetCookie(userIdCookie); 

を:

public ActionResult Basket() 
{ 
    //Getting the cookie which has the name "userId" and assigning that to a variable. 
    string userId = Request.Cookies.Get("userId").Value; 
    var basket = _context.Basket.Where(x => x.UserId == userId);  
    return View(basket); 
} 

:私はので、ここでRequest.Cookies.Get( "userIdを")を使用していたがResponse.Cookies.Get( "userId")を使用し、Cookie "UserId"が存在しない場合、Cookieが作成されます。

+0

私はすでに「顧客」テーブルに接続されている「注文」テーブルを持っています。私は一時顧客を作成し、その顧客のクッキーに一時顧客のデータを保存したいだけです。 –

+0

これをやってみると、やってみる方法が分かりました。 –

+0

ちょっとした微調整の後で完璧に動作しました。最初にクッキーを取得するための条件を追加しました。それ以外の場合は、Cookieを割り当てます(そうでなければ、Homepageを開くたびに新しいユーザーを作成しました)。ありがとうございました! –

0

ユーザーがカートに何かを追加して、そのような実行のjavascript:

var storedId = localStorage.getItem('myId'); 

if(storedId == null) 
{ 
    storedId = parseInt(Math.Random * 1000); // or better, use UUID generation from here: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript 

    localStorage.setItem('myId', storedId); // for future reference 
} 

、あなたがカートに何かを追加するたびに、IDを投稿し、例えば

コントローラー:

[HttpPost] 
public ActionResult AddToCard(string userId, string productId, int quantity) 
{ 
    /// perform your saving to db 
} 

アヤックス(またはものは何でも使うフレームワーク):

$.post('/somewhere', {userId: storedId, productId: 'whatever', quantity: 1}); 
関連する問題