مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

استفاده از یک CookieHelper در یک view

پنج شنبه, 03 اسفند 1396 13:59

استفاده از یک CookieHelper در یک view

سلام

من کلاس زیر را تعریف کرده ام

using System;
using System.Web;

namespace WebApplication10.Helpers
{
    public static class CookieHelper
    {
        public static void AddCookie(this HttpContextBase httpContextBase, string cookieName, string value)
        {
            httpContextBase.AddCookie(cookieName, value, DateTime.Now.AddDays(30));
        }

        public static void RemoveCookie(this HttpContextBase httpContextBase, string cookieName)
        {
            var cookie = new HttpCookie(cookieName)
            {
                Expires = DateTime.Now.AddDays(-1)
            };
            httpContextBase.Response.Cookies.Set(cookie);
        }

        public static void UpdateCookie(this HttpContextBase httpContextBase, string cookieName, string value, bool httpOnly = false)
        {
            var cookie = new HttpCookie(cookieName)
            {
                Value = httpContextBase.Server.UrlEncode(value),
                HttpOnly = httpOnly
            };
            httpContextBase.Response.Cookies.Set(cookie);
        }
        public static void AddCookie(this HttpContextBase httpContextBase, string cookieName, string value, DateTime expires, bool httpOnly = false)
        {
            var cookie = new HttpCookie(cookieName)
            {
                Expires = expires,
                Value = httpContextBase.Server.UrlEncode(value),// For Cookies and Unicode characters
                HttpOnly = httpOnly
            };
            httpContextBase.Response.Cookies.Add(cookie);
        }

        public static string GetCookieValue(this HttpContextBase httpContext, string cookieName)
        {
            var cookie = httpContext.Request.Cookies[cookieName];
            if (cookie == null)
                return string.Empty; //cookie doesn't exist

            // For Cookies and Unicode characters
            return httpContext.Server.UrlDecode(cookie.Value);
        }
    }
}

و در کنترلر هم کد زیر را نوشته ام

   public ActionResult Index()
        {
            var cook = "asp";
            HttpContext.AddCookie("post",cook.Protect("test"), DateTime.Now.AddSeconds(45));
            var cook1 = HttpContext.GetCookieValue("post");
     
            return View();
        }

که درست کار میکند 

اما وقتی در view می خواهم کد زیر را بنویسم

@{
    ViewBag.Title = "Home Page";
}


<div class="row">
    <div class="col-md-4">
        <h2>Getting started</h2>
        <p>
            cookie Value:@(HttpContext.GetCookieValue("post"))
        </p>
    </div>
   
</div>
GetCookieValue را نمیشناسد 

کدهای کلاس را باید چگونه تغییر بدهم تا در viewهم بتوانم استفاده کنم

پنج شنبه, 03 اسفند 1396 15:48

به این صورت عمل کنید: 

@ViewContext.RequestContext.HttpContext.GetCookieValue("post");

کسانی که از این پست تشکر کرده اند : iran,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید