c# - 购物车问题,asp.net c#

标签 c# asp.net

我构建了一个简单的购物车。问题是我第一次尝试添加项目时没有任何反应。如果我第二次单击购买按钮,则会添加一个项目。 如果出现这个问题是什么原因?

谢谢!

.aspx

<asp:Content ContentPlaceHolderID="main" runat="server">
White lily
<asp:Button ID="button" runat="server" OnClick="buy_Click" />
</asp:Content>

<asp:Content ContentPlaceHolderID="rightBar" runat="server">
    <UserControl:ShoppingCart id="shoppingCart" runat="server" />
</asp:Content>

.ascx

public partial class UserControls_ShoppingCart : System.Web.UI.UserControl
{
    private List<Flower> FlowerList 
    {
        get
        {
            List<Flower> tmp = Session["FlowerList"] as List<Flower>;
            if (tmp == null)
            {
                tmp = new List<Flower>();
            }
            return tmp;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            FillRepeater();
        }

    }

    public void ShoppingCart_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item != null)
        {
            Label itemLabel = e.Item.FindControl("itemLabel") as Label;
            Flower flower = e.Item.DataItem as Flower;
            if (flower != null)
            {
                itemLabel.Text = flower.getName(flower);
            }
        }
    }

    private void FillRepeater()
    {
        shoppingCartRepeater.DataSource = FlowerList;
        shoppingCartRepeater.DataBind();
    }

    public void AddFlower(Flower flower)
    {
        FlowerList.Add(flower);
        Session["FlowerList"] = FlowerList;
        FillRepeater();
    }
}

最佳答案

根据我对第一个答案的评论..试试这个

 private List<Flower> FlowerList 
    {
        get
        {
             return(_FlowerList);
        }
        set
        {
            _FlowerList = value;
        }

    }
    protected List<Flower> _FlowerList = new FlowerList();
    protected void Page_Load(object sender, EventArgs e)
    {
       if (Session["FlowerList"]!= null) {
           FlowerList = (List<Flower>)Session["FlowerList"];
       }
        if (!Page.IsPostBack)
        {
            FillRepeater();
        }
    }

它应该与其他一切一样工作。更好的方法是使用 ViewState,并将 _FlowerList 的值保存在 SaveViewState() 中

关于c# - 购物车问题,asp.net c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990838/

相关文章:

c# - 正则表达式基于组的不同替换?

c# - 将 Microsoft.Azure.ServiceBus 替换为 Azure.Messaging.ServiceBus

asp.net - 为什么 ASP.NET Core MVC 3.1 项目不允许我使用 Identity 使用注册用户登录

javascript - ASP.NET 使用 Javascript 停止 CodeBehind 调用

asp.net - 是否可以使用 Visual Studio Web 发布到 Azure Web App 来部署单个 aspx.cs 文件(Azure 运行时问题)

asp.net - ValidateRequest = False 但实际上它仍然是 True 并忽略了它?

c# - 如何在不使用设置应用程序的情况下在 Windows 10 平板电脑应用程序中发现未配对的蓝牙设备

c# - lambda 表达式中的事件 - C# 编译器错误?

c# - 如何将 Javascript 代码转换为 C# 代码

javascript - Asp.net在两个ajax calendar_extender中显示相同的日期