我正在通过mvc3构建一个Web应用程序。现在我需要创建一个属性,它将放在每个控制器之前,如下所示:
[CustomAttribute]
public class DocinstanceController : Controller
{}
如果密钥错误,此属性用于验证生产密钥并指向预定义的网页。
我的问题是如何创建这样的属性?
由于
答案 0 :(得分:0)
这是一种简单的方法(根据@Hackerman的建议):
public class CheckKeyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var keyController = filterContext.Controller as IKeyController;
if (keyController != null && keyController.Key != "MyKey")
{
filterContext.HttpContext.Response.Redirect("NoKey");
}
}
}
public interface IKeyController
{
string Key { get; set; }
}
[CheckKey]
public class HomeController : Controller, IKeyController
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
public string Key
{
get
{
return "MyKey1";
}
set
{
}
}
}