0

ここでトリッキーなものを手に入れました!

このCartオブジェクトがモデルバインダーを使用して値によって渡される場合、セッションの実際の値にどのように影響するかを理解したいのですが。

  public RedirectToRouteResult AddToCart(Cart cart, int productId, string returnUrl) {
        Product product = repository.Products
            .FirstOrDefault(p => p.ProductID == productId);

        if (product != null) {
            cart.AddItem(product, 1);
        }
        return RedirectToAction("Index", new { returnUrl });
    }

これが私の問題を説明することを願っています!

助けてくれてありがとう

詳細

この太字のコードは、セッションのカスタムプロファイルには影響しません

   [AllowAnonymous]
    [HttpPost]
    public ActionResult Register(RegisterModel model, CustomProfile customProfile)
    {
        if (User.Identity.IsAuthenticated)
            return RedirectToAction("Index", "Home");
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;


            membershipProvider.CreateUser(model, null, null, true, null,
                                          out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                const string message = "You have successfully reigestered, and you are now logged in.";
                authProvider.SetAuthCookie(model.UserName, false /* createPersistentCookie */);

                var newCustomProfile = new CustomProfile(model.UserName);
                var db = new CrowdFundingDB();

                **customProfile = customProfileProvider.Create(newCustomProfile);**
4

1 に答える 1

1

Cartは値型ではなく、参照型です。

引数として渡すとオブジェクトのコピーは作成されません。メソッドは実際のオブジェクトへの参照のコピーを受け取ります。コピーされた参照を介して同じオブジェクトにアクセスします。

参照:ByRefとByValの明確化

于 2012-11-26T17:51:55.023 に答える