通过C#中的会话向列表添加值

时间:2017-03-20 02:19:42

标签: c# asp.net

在我的page1.aspx.cs中我有这个

  resultsHtml.Append("<a class='btn btn-warning' href='report.aspx?asset=" + rd["n_asset_id"].ToString() + "'><i class='fa fa-paw'></i></a> ");

所以在我的report.aspx中,我会抓住价值。

Session["passThis"] = Request.QueryString["asset"];

然而,在我的action.cs中,我创建了一个用于存储列表的类。我正在考虑在那里添加一个会话,但每次我store()它都会创建另一个List。

public static void store() {

    List<string> ast = new List<string>();

}

我怎样才能实现这一壮举?我的想法已经不多了。

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是将资产列表提取到属性中(这样您就可以从代码的其他部分轻松访问它。在属性获取器中,代码检查会话中是否有列表。

Store方法中,您可以访问资产列表(List<string),如果当前请求中有asset参数,则将其添加到您的资产列表中。请注意,由于Session metod / property,访问HttpContext.Current.Session是通过static完成的。

public static void Store()
{
    string assetValue = HttpContext.Current.Request["asset"];
    if (!string.IsNullOrEmpty(assetValue))
        AssestsList.Add(assetValue);


}

public static List<string> AssestsList
{
    get
    {
        if (HttpContext.Current.Session["assets"] == null)
        {
            HttpContext.Current.Session["assets"] = new List<string>();
        }

        return HttpContext.Current.Session["assets"] as List<string>;
    }
    set
    {
        HttpContext.Current.Session["assets"] = value;
    }
}

所以,要使用它,只需从代码中调用Store()

如果您有任何问题,请随时提出。