对象c#前面的方括号

本文关键字:方括号 前面 对象 | 更新日期: 2023-09-27 18:25:51

我正在学习.NET MVC 5,在使用ModelBinder时遇到了一个关于方括号的问题。

[HttpPost]
        public ActionResult Submit([ModelBinder(typeof(CustomerBinder))] Customer cust)
        {
            return View("Customer", cust);
        }

我不明白方括号是如何作用于物体的。如何将表单中的数据传输到CustomerBinder?以及通常Submit动作参数的代码流是什么。

提前感谢:)

对象c#前面的方括号

这些被称为属性,这里有一个msdn turotial来解释它们。

属性提供了一种将元数据或声明性信息与代码(程序集、类型、方法、属性等)关联起来的强大方法。将属性与程序实体关联后,可以在运行时使用一种称为反射的技术来查询该属性。有关更多信息,请参阅反射

编辑:

为了具体说明MVC如何使用属性,我建议继续你的MVC教程,因为这是一个更长的答案。如果你想要我找到的,这里有一个好的。

简而言之,

  • [HttpPost]属性让MVC只知道允许POST请求通过此方法,而不允许其他Http谓词(如PUT或GET)通过
  • [ModelBinder(typeof(CustomerBinder))]属性通知控制器要用于传入对象的绑定器

在这个特定的代码中:

[HttpPost]
public ActionResult Submit([ModelBinder(typeof(CustomerBinder))] Customer cust)
{
    return View("Customer", cust);
}

这些是部分:

  • [HttpPost]是一个方法属性。它使用额外的元数据或元功能来修改方法。在这种情况下,它将对该操作的HTTP访问限制为仅POST谓词
  • [ModelBinder(typeof(CustomerBinder))]是另一个属性,但这会修改方法的特定参数,而不是方法本身。在这种情况下,Customer cust参数。ModelBinder属性允许您显式指定要使用的模型绑定器,因此您可以为特定操作提供自定义模型绑定器

从本质上讲,MVC(和WebAPI)检查HTTP请求中传入的表单值,并尽最大努力(使用默认的模型绑定器)将这些值应用于方法参数。在绝大多数情况下,这都很好。但是,有时您可能需要为此实现自定义功能。因此,您可以编写自己的模型绑定器,并且有不同的方法来告诉框架使用它们。这就是一种这样的方式,它将特定的模型绑定器(CustomerBinder)仅应用于该特定方法的特定参数。

方括号只是属性。httppost和httpe-get只是将操作限制为请求类型。

您可以使用下面的链接获取更多信息:https://msdn.microsoft.com/en-us/library/z0w1kczw%28v=vs.80%29.aspx