如何禁用特定类的默认模型绑定

时间:2009-09-25 09:50:53

标签: c# asp.net-mvc

我想禁用特定类的模型绑定,更具体一点我不希望默认模型绑定设置类的某些数据属性。

例如。我有一个类的高度和宽度属性,我希望由用户明确设置

like model.height = xxx;

即使我将模型传递给action方法,默认模型绑定器也不应设置该值。

有办法吗?

2 个答案:

答案 0 :(得分:1)

查看ExludeIncludeBindAttribute属性。

public ActionResult Create([Bind(Exclude="Height")]MyModel model)

恕我直言,最好使用Include而不是Exclude,因为这样你明确应该自动绑定哪些属性。使用Exclude可能存在安全风险,黑客可能会利用它来设置不打算由绑定程序设置的属性。

答案 1 :(得分:1)

你可以像达林所说的那样做,或者你可以在模型类中实际做到这一点

using System.Web.Mvc;

[Bind(Exclude = "Height, Width")]
public class MyModelClass {
    ....
}

这种方式无论在哪里使用,这些属性都不会受到限制。显式更安全,并提供一个(Include =)列表,这样,默认情况下新属性不会被绑定,并且在您考虑安全隐患时,您将被迫包含它们。