我是MVC的新手并试图了解控制器。请问您对以下情况有何评论?:
我们的应用程序的业务要求是用户在使用应用程序时必须接受“隐私政策”屏幕。我通过在用户单击初始Home Controller索引视图中的链接时设置cookie来执行此操作。
但是,我需要确保我们的应用程序中的任何入口点(即不仅来自索引页面,而是应用程序中的任何位置)检查cookie的存在。我觉得这个值可以由每个控制器检查,但我不想在每个控制器上复制相同的“如果cookie存在做某事”代码。那么我可以写下我的方法吗?
希望这是有道理的!
答案 0 :(得分:1)
使用Custom ActionFilterAttribute。
创建一个CheckCookie类:
public class CheckCookie : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!CookieExists)// Check the Cookie exists
{
//Redirect if the cookie does not exists
filterContext.Result = new RedirectResult("~/Redirect/NoCookie");
return;
}
}
}
<强>控制器:强>
[CheckCookie]//Check the Cookie exists
public ActionResult Index()
{
return View();
}
答案 1 :(得分:0)
编写一个自定义基本控制器(它本身继承了标准的ASP.NET MVC控制器),其中包含您的cookie验证码,然后让您的其他控制器派生出来。
例如,为了确保默认情况下我的所有操作都需要对用户进行身份验证,我使用与此类似的操作作为基本控制器:
[Authorize]
public class CoreController : Controller
{
/* ... */
}
然后我的家庭控制器看起来像:
public class HomeController : CoreController
{
/* ... */
}