Asp.net mvc 如果在模型绑定时排除了属性或字段,它将具有什么值?

Asp.net mvc 如果在模型绑定时排除了属性或字段,它将具有什么值?,asp.net-mvc,bind,model-binding,Asp.net Mvc,Bind,Model Binding,实际上,问题就在标题中——假设我有一个这样的简单类: public class Product { public Int32 ID { get; set; } public String Name { get; set; } //... } 当我在行动方法中使用它时,如下所示: public ViewResult DoSomething([Bind(Exclude="ID")]Product product] { //... } product.ID在此操作方法中具有什么

实际上,问题就在标题中——假设我有一个这样的简单类:

public class Product {
   public Int32 ID { get; set; }
   public String Name { get; set; }
   //...
}
当我在行动方法中使用它时,如下所示:

public ViewResult DoSomething([Bind(Exclude="ID")]Product product] {
 //...
}
product.ID在此操作方法中具有什么值?也许它将是Int32的默认值?如果ID是引用类型,则为null?我只是感兴趣,没有在web上找到它。

如果没有指定其他内容,则使用的确实使用了
默认值(t)


要改变这一点,您可以修改action方法中每个参数的绑定行为(就像您在示例中使用
BindAttribute
一样),或者修改Global.asax中每个类型的绑定行为。

,因为根本不需要初始化,该属性将有其默认值。

如果已初始化该属性,但已使用Exclude?从模型绑定中排除,则排除列表中的属性不允许绑定,因此DefaultModelBinder不会尝试绑定它们。它们也不会影响ModelState。您自己尝试过测试吗?