日期:2014-05-17  浏览次数:20944 次

关于C#的Attribute
本帖最后由 top8843 于 2013-03-10 22:54:19 编辑
在网上看了很多关于Attribute的资料,却发现用Attribute完成一个简单的功能都做不到,比如,我就想在Attribute中创建一个Session,请问怎么做呢?
下面是我想当然的代码,请指教

using System;
using System.Web;

namespace Test
{
    public class AbcAttribute : Attribute
    {
        public AbcAttribute()
        {
            HttpContext.Current.Session["abc"] = "vvv";
        }
    }
}

我用的是ASP.NET MVC,将这个特性加在控制器的方法上

namespace Test.Controllers
{
    public class HomeController : Controller
    {
        [Abc()]
        public ActionResult Index()
        {
            return View();
        }

    }
}

然后在视图中,企图输出这个Session,却没有结果

------解决方案--------------------

class SessionAttribute : System.Web.Mvc.ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Session["abc"] = "vvv";

            base.OnActionExecuting(filterContext);
        }
    }