如何共享使用“Response”的函数或“请求”在 ASP.NET 中?

发布于 2024-10-11 04:22:05 字数 113 浏览 7 评论 0原文

我想要一个实用函数,可以有条件地更新我网站中多个页面的请求和响应。

使用标准 .CS 类似乎无法让我访问这些对象。我(一般来说)如何创建一个实用程序函数来检查 cookie 并在多个页面上更新它?

I'd like to have a utility function that conditionally updates my request and response across several pages in my site.

Using a standard .CS class doesn't seem to give me access to these objects. How can I (generall speaking) create a utility function that checks for a cookie and update it across multiple pages?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

错爱 2024-10-18 04:22:05

获取这些内容

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);
}

You can always get at these things via

System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

HttpContext Class and the Current Property

Encapsulates all HTTP-specific information about an individual HTTP request.


And to manage some cookie value throughout your site I would suggest either create a BasePage class that all of your Pages inherited from and do the checks there:

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

do the same in your 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);
}
猫性小仙女 2024-10-18 04:22:05

使用 HttpContext.Current.Request 和 HttpContext.Current.Response

use HttpContext.Current.Request and HttpContext.Current.Response

久隐师 2024-10-18 04:22:05

使用完全限定的命名空间:

System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

-- 或 --

using System.Web.HttpContext.Current;

那么您应该能够在整个类中访问请求/响应。

Use the fully qualified namespace:

System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

-- or --

using System.Web.HttpContext.Current;

Then you should be able to access Request/Response throughout your class.

悲歌长辞 2024-10-18 04:22:05

有几种方法可以做到这一点。其他人提到使用 System.Web.HttpContext.Current 执行此操作,但我认为(根据我认为您的意图猜测)在母版页上加载时运行的方法上执行此操作是一个更好的主意。

There are several ways to do this. Other have mentioned doing this with System.Web.HttpContext.Current, but I'd think (guessing from what I think your intent is) that doing this on a method that runs on load on your master pages is a better idea.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文