如果模型绑定时排除属性或字段,它会有什么值?

发布于 2024-08-12 09:44:50 字数 382 浏览 4 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一直在等你来 2024-08-19 09:44:50

由于根本不会进行初始化,因此该属性将具有其默认值。

Since there will be no initialization at all, the property will have its default value.

浅忆 2024-08-19 09:44:50

您正在使用的 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文