gpt4 book ai didi

c# - .NET MVC 3 语义

转载 作者:太空狗 更新时间:2023-10-29 22:28:07 27 4
gpt4 key购买 nike

我正在阅读一些示例,并且我一直看到在方法之前带有 [SOMETHING] 的代码,我想知道它叫什么以及它是如何使用的。

你能定义你拥有的 [SOMETHING] 还是有这些东西的定义 list ?

这是我发现的一些代码示例,它们使用了这个东西,但没有解释任何相关内容。

[HandleError]

public class HomeController : Controller
{

public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";

return View();
}

public ActionResult About()
{
return View();
}
}

有时他们甚至把参数也放在里面

[HandleError(Order = 2)]

这是怎么回事。我觉得这是 super 重要的,但我读过的引用书都没有解释它们只是使用它们。

提前致谢。

最佳答案

HandleError 是一个属性。

属性简介

属性包含在方括号、前缀类、结构、字段、参数、函数和参数中,您可以通过从类中的属性继承来定义自己的属性。创建属性的典型格式如下:

public class NameOfYourAttributeAttribute : Attribute {

}

您还可以在属性定义前加上定义其适用范围的属性:

[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct)]
public class NameOfYourAttributeAttribute : Attribute {

}

在上面的示例中,类实际上并没有那么多,除了它只是类或结构的装饰器。考虑来自 MSDN 的示例,其中可以为类指定作者属性 (http://msdn.microsoft.com/en-us/library/z919e8tw%28v=vs.80%29.aspx):

[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple = true)]
public class Author : System.Attribute
{
string name;
public double version;

public Author(string name)
{
this.name = name;
version = 1.0; // Default value
}

public string GetName()
{
return name;
}
}

[Author("H. Ackerman")]
private class FirstClass
{
// ...
}

// There's some more classes here, see the example link...

class TestAuthorAttribute
{
static void Main()
{
PrintAuthorInfo(typeof(FirstClass));
PrintAuthorInfo(typeof(SecondClass));
PrintAuthorInfo(typeof(ThirdClass));
}

private static void PrintAuthorInfo(System.Type t)
{
System.Console.WriteLine("Author information for {0}", t);
System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t); // reflection

foreach (System.Attribute attr in attrs)
{
if (attr is Author)
{
Author a = (Author)attr;
System.Console.WriteLine(" {0}, version {1:f}", a.GetName(), a.version);
}
}
}
}

在 HandleError 的情况下,具体来说:

它们提供了可以通过反射看到的有用信息。在 HandleError 的情况下,这意味着如果在 Controller 中抛出任何异常,它将在 ~/Views/Shared/中呈现错误 View 。

参见 http://msdn.microsoft.com/en-us/library/system.web.mvc.handleerrorattribute.aspx了解更多详情。

关于c# - .NET MVC 3 语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com