Eri*_*aal 4 c# asp.net-mvc asp.net-mvc-3
我正在尝试使用razor作为视图引擎的ASP.NET MVC 3站点.我需要为我网站的每个访问者分配一个cookie.这样做的最佳地点/方式是什么?请详细说明,因为我是ASP.NET的新手.
Evg*_*vin 10
有三种方法可以在不破坏mvc模式的情况下实现它:
1 - 在OnActionExecuting/ OnActionExecuted/ OnResultExecuting方法中具有指定行为的基本控制器类(如果整个网站需要此行为)
2 - 在OnActionExecuting/ OnActionExecuted/ OnResultExecuting方法中创建具有指定行为的动作过滤器:
public class MyCookieSettingFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Cookies.Add(new HttpCookie(name, value));
}
}
Run Code Online (Sandbox Code Playgroud)
和
例如,将过滤器属性分配给某些控制器/操作(如果所有网站都不需要此行为)
[MyCookieSettingFilter]
public class MyHomeController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)
要么
public class MyAccountController : Controller
{
[MyCookieSettingFilter]
public ActionResult Login()
{
}
}
Run Code Online (Sandbox Code Playgroud)
3 - 在OnActionExecuting/ OnActionExecuted/ OnResultExecuting方法中创建具有指定行为的操作过滤器并将其注册到global.asax- 它将适用于所有控制器的所有操作(如果所有网站都需要此行为)
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyCookieSettingFilterAttribute());
}
Run Code Online (Sandbox Code Playgroud)
我不建议使用Base Controller方式,因为它比Global Filter方式的可扩展性差.使用不同的全局过滤器提供不同的独立全局行为.
| 归档时间: |
|
| 查看次数: |
11010 次 |
| 最近记录: |