ASP.NET 设置 cookie 的默认值

ASP.NET set default value for cookies

所以我制作了 2 页,一页用于设置,另一页用于标签和图像。我想要的是当没有 cookie 时 img_gm.BorderWidth 和 img_gm.Bordercolor 将默认为 1 和黑色,但似乎错误总是发生在 libe "img_gm.BorderWidth = Convert.ToInt32(cookie["width"]);"任何帮助将不胜感激。

*我在设置页面中放置了文本框、下拉列表和单选按钮以获取 cookies["width"]、cookies["color"] 和 cookies["font"] 的输入

protected void Page_Load(object sender, EventArgs e) {

    HttpCookie cookie = Request.Cookies["settings"];
    if (Request.Cookies.AllKeys.Contains("settings") == null)
    {
        cookie["width"] = "1";
        cookie["color"] = "Black";
        cookie.Expires = DateTime.Now.AddDays(14);
        Response.Cookies.Add(cookie);
    }
    else
    {

        img_gm.BorderWidth = Convert.ToInt32(cookie["width"]);
        img_gm.BorderColor = System.Drawing.Color.FromName(cookie["color"]);
        switch (cookie["font"])
        {
            case "Bold":
                lbl_desc.Font.Bold = true;
                break;
            case "Italic":
                lbl_desc.Font.Italic = true;
                break;
            case "Overline":
                lbl_desc.Font.Overline = true;
                break;
            case "Underline":
                lbl_desc.Font.Underline = true;
                break;
        }

    }

一个巧妙的技巧是将它们更改为 class 中的属性:

public int CookieWidth {
  get {
    int width;
    var str = String.Format("{0}", cookie["width"]);
    if (!Integer.TryParse(str, width)) {
      width = 1;
    }
    return width;
  }
  set {
    cookie["width"] = value;
  }
}

您也可以使用 Color 来做到这一点。