如果模型绑定时排除属性或字段,它会有什么值?
实际上,问题在标题中 - 假设我有一个像这样的简单类:
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?我只是感兴趣,网上没找到。
The question is in the title, actually - let's say I have a simple class like this:
public class Product {
public Int32 ID { get; set; }
public String Name { get; set; }
//...
}
When I use it in action method, like this:
public ViewResult DoSomething([Bind(Exclude="ID")]Product product] {
//...
}
what value will product.ID have inside this action method? Maybe it will be default value for Int32? And null in case ID is reference-type? I'm just interested, didn't find it on the web.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于根本不会进行初始化,因此该属性将具有其默认值。
Since there will be no initialization at all, the property will have its default value.
您正在使用的 DefaultModelBinder,如果没有指定任何其他内容,确实使用
default(T)
作为未绑定值。要更改此设置,您可以修改操作方法中每个参数的绑定行为(就像您在示例中使用
BindAttribute
所做的那样),或者例如中的每个类型。全球.asax。The DefaultModelBinder, which you are using if nothing else is specified, indeed uses
default(T)
for unbound values.To change this, you can modify binding behavior per-parameter in action methods (as you are doing with the
BindAttribute
in your example), or per-type in eg. Global.asax.