对象c#

时间:2015-12-04 18:29:13

标签: c# asp.net-mvc

我正在学习.NET MVC 5,并且在使用ModelBinder时对方括号有疑问。

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

我不明白方括号如何处理对象。 表单中的数据如何传输到CustomerBinder? 一般来说,提交动作参数的代码流是什么。

提前感谢:)

3 个答案:

答案 0 :(得分:2)

这些被称为attributes,并且有一个msdn turotial解释它们here

  

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

编辑:

为了明确说明MVC如何使用属性,我建议继续你的MVC教程,因为这是一个更长的答案。如果你想要一个我找到的,here's a good one

简言之,

  • [HttpPost]属性让MVC知道只允许POST请求进入此方法,而不是其他Http Verbs,如PUT或GET。
  • [ModelBinder(typeof(CustomerBinder))]属性会通知控制器您希望它用于传入的对象的活页夹。

答案 1 :(得分:1)

在这个特定的代码中:

[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)应用于仅特定方法的特定参数。

答案 2 :(得分:0)

方括号只是属性。 httppost和httpe只是限制请求类型的操作。

你可以在下面链接获取mor信息: https://msdn.microsoft.com/en-us/library/z0w1kczw%28v=vs.80%29.aspx

相关问题