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

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

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

像model.height = xxx;

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

有没有办法这样做?

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

using System.Web.Mvc; [Bind(Exclude = "Height, Width")] public class MyModelClass { .... } 

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

看一下BindAttribute的Exlude , Include属性。

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

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