Как поделиться функцией, которая использует «Ответ» или «Запрос» в ASP.NET? - PullRequest
0 голосов
/ 05 января 2011

Мне бы хотелось иметь служебную функцию, которая условно обновляет мой запрос и ответ на нескольких страницах моего сайта.

Использование стандартного класса .CS не дает мне доступа к этим объектам. Как я могу (вообще говоря) создать служебную функцию, которая проверяет cookie и обновляет его на нескольких страницах?

Ответы [ 4 ]

1 голос
/ 05 января 2011

Вы всегда можете добраться до этих вещей через

System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

Класс HttpContext и текущее свойство

Инкапсулирует всю специфичную для HTTP информацию об отдельном HTTP-запросе.


И для управления каким-либо значением cookie на вашем сайте я бы предложил создать класс BasePage, от которого унаследованы все ваши страницы, и выполнить там проверки:

public class BasePage : System.Web.UI.Page
{
    protected override void OnPreRender(EventArgs e)
    {
        UpdateCookie();
        base.OnPreRender(e);
    }
}

сделать то же самое в вашей MasterPage:

public class SiteMasterPage : MasterPage
{
    protected override void OnPreRender(EventArgs e)
    {
        UpdateCookie();
        base.OnPreRender(e);
    }
}

public static void UpdateCookie()
{
    HttpContext context = System.Web.HttpContext.Current;
    HttpCookie cookie = context.Response.Cookies.Get("Update") 
        ?? new HttpCookie("Update");        

    int value = 0;
    int.TryParse(cookie.Value, out value);
    value++;

    cookie.Expires = DateTime.Now.AddDays(30);
    cookie.Value = value.ToString();
    context.Response.Cookies.Set(cookie);
}
1 голос
/ 05 января 2011

использовать HttpContext.Current.Request и HttpContext.Current.Response

0 голосов
/ 05 января 2011

Есть несколько способов сделать это. Другие упомянули, что делают это с System.Web.HttpContext.Current, но я думаю (догадываясь из того, что я думаю о вашем намерении), что делать это на методе, который работает под нагрузкой на ваших главных страницах, - лучшая идея.

0 голосов
/ 05 января 2011

Используйте полное пространство имен:

System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

- или -

using System.Web.HttpContext.Current;

Тогда вы сможете получить доступ к запросу / ответу на протяжении всего класса.

...