在MVC4和C#中使用括号?

Mik*_*key 1 asp.net-mvc c#-4.0

如果你们认为这是一个愚蠢的问题,我很抱歉.我已经准备好对我认为无能的事情提出任何批评.我是C#的新手,我不能为自己的生活找到任何参考.这个"[授权]"对代码中的类做了什么?我知道AccountController继承自Controller.我只是不明白授权是在括号中做的.我假设它继承了System.Web.Mvc.AuthorizeAttribute中的代码,但不确定,因为当放在类或方法之前时,我找不到括号在C#中的含义.所以让我的问题清楚,我问,在类或函数之前将任何东西放在括号中的目的是什么?它继承了什么吗?如果是这样,为什么不使用冒号继承Controller?如果有人可以发送链接引用也没关系..任何帮助表示赞赏..

[Authorize]
public class AccountController : Controller
{
Run Code Online (Sandbox Code Playgroud)

我注意到下面这个方法的用法相同.它使用[AllowAnonymous]代替..

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}
Run Code Online (Sandbox Code Playgroud)

Eri*_* J. 6

括号中的内容,例如[授权]称为属性.它们是元数据,可以应用(取决于您正在讨论的属性)类,方法和属性.

http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx

与代码交互的代码可以使用反射来查看已应用的属性,以及与每个属性关联的参数(如果有).

在你提到的具体例子中,

[Authorize]
Run Code Online (Sandbox Code Playgroud)

属性由MVC运行时检查以帮助控制对控制器的访问

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.108).aspx

[AllowAnonymous]
Run Code Online (Sandbox Code Playgroud)

attribute指定控制器的特定Login方法不需要授权.

http://msdn.microsoft.com/en-us/library/system.web.mvc.allowanonymousattribute(v=vs.108).aspx