让HttpCookie更短

时间:2011-06-26 23:21:08

标签: c#

我们可以将下面的代码缩短。感谢

HttpCookie myCookie = new HttpCookie("UserID", "JLovus");
myCookie.Expires = DateTime.Now.AddMinutes(30);
Response.Cookies.Add(myCookie);

7 个答案:

答案 0 :(得分:2)

这真的不是很多代码。不过,如果你不得不多次这样做,我可以想象它会变得烦人。在这种情况下,您可以使用函数为您执行此操作。例如:

public static class ResponseExtensions 
{
    public static void AddCookie(this HttpResponse response, string key, string value, 
        int minutesToLive = 30) 
    {
        var myCookie = new HttpCookie(key, value);
        myCookie.Expires = DateTime.Now.AddMinutes(minutesToLive);
        response.Cookies.Add(myCookie);
    }
}

然后您的代码变为:

Response.AddCookie("UserID", "JLovus");

答案 1 :(得分:0)

Response.Cookies.Add(new HttpCookie("UserID", "JLovus")
{
    Expires = DateTime.Now.AddMinutes(30)
});

答案 2 :(得分:0)

Response.Cookies.Add(new HttpCookie("UserID", "JLovus")
{
    Expires = DateTime.Now.AddMinutes(30)
}); 

答案 3 :(得分:0)

你可以用1个不太容易理解的行来做,如下所示: Response.Cookies.Add(new HttpCookie("UserID", "JLovus") {Expires = DateTime.Now.AddMinutes(30)});

仅仅因为你可以在更少的代码行中做某事并不意味着你应该这样做。您的原始代码简洁易读。我(以及其他几个人)发布的内容很难一目了然。

答案 4 :(得分:0)

是的,但重点是什么?

Response.Cookies.Add(new HttpCookie("UserID", "JLovus") 
    {Expires = DateTime.Now.AddMinutes(30)});

答案 5 :(得分:0)

您可以将其放在一个函数中:

public HttpCookie AddHttpCookie(String key, String value, int timeOut)
{
    HttpCookie httpCookie = new HttpCookie(key, value);
    httpCookie.Expires = DateTime.Now.AddMinutes(timeOut);
    Response.Cookies.Add(httpCookie);
    return httpCookie;
}

并以这种方式称呼它:

HttpCookie myCookie = AddHttpCookie("UserID", "JLovus", 30);

或者只是:

AddHttpCookie("UserID", "JLovus", 30);

答案 6 :(得分:0)

如果您经常使用此代码,则应考虑将其放入函数中:

protected void CreateUserIDCookie(string userID, int timeUntilExpires)
{
    HttpCookie myCookie = new HttpCookie("UserID", userID);
    myCookie.Expires = DateTime.Now.AddMinutes(timeUntilExpires);
    Response.Cookies.Add(myCookie);
}

然后在您的代码中执行此操作:

this.CreateUserIDCookie("JLovus", 30);

正如其他人所建议的那样,你可以将它减少到一行,但正如他们所说的那样,它的可读性较差,而且我宁愿有三行可读代码,而不是一行更难阅读。代码已经足够难以阅读。