MVC根据查询字符串在入口点添加cookie

时间:2012-01-06 03:15:14

标签: c# .net asp.net-mvc-2

获得了Cookie的跨站点可用性(桌面站点和移动站点之间)的场景。当有人进来时“http://www.xyz.com?qrystring=12345”“http://m.xyz.com?qrystring=12345” ,我必须为域添加一个cookie(.xyz.com)。在Asp.Net桌面应用程序中实现了它,但是想在Asp.Net MVC2移动站点中实现类似的功能。

有关如何从MVC移动网站的任何页面捕获该建议的任何建议。它可以是移动网站上的任何页面(m.xyz.com/page1?qrystring=1234),我可以从中添加cookie。 使用ASP.NET MVC2并且不能使用MVC3

在这种情况下,使用MVC应用程序在global.asax中使用Application_BeginRequest事件是否安全?

1 个答案:

答案 0 :(得分:1)

你可以编写一个actionrilter属性并用它来装饰你的控制器,如

public class CookieStateAttribute : ActionFilterAttribute
    {
        string __key = "querystring";

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            var viewData = filterContext.Controller.ViewData;
            var request = filterContext.HttpContext.Request;

            if (request.Cookies[__key] != null)
            {
                HttpCookie cookie = request.Cookies[__key];
                //do something with cookie value

            }
            else
            {
                var cookie = new HttpCookie(__key, "value");
                request.Cookies.Add(cookie);
            }
        }
    }

然后你可以使用像

这样的属性来装饰你的控制器
[CookieState]
public class HomeController:Controller
{
   .
   .
   .
}

当然,您必须根据您的要求更改属性的实现。