gpt4 book ai didi

c# - 在 ASP.NET MVC 中的 ViewModel 类上使用 Bind 属性

转载 作者:可可西里 更新时间:2023-11-01 03:04:21 26 4
gpt4 key购买 nike

为什么开发人员可能会在 ASP.NET MVC 项目中对 ViewModel 对象使用 Bind 属性,这会对应用程序产生不利影响吗?

[Bind(Include = "Id,Name")]
[MetadataType(typeof (MyViewModelValidation))]
public class MyViewModel
{
public string CustomerProductUserName { get; set; }

[Display(Name = "Name")]
public string Name { get; set; }

}

public class MyViewModelValidation
{
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }

[Required]
public string Name{ get; set; }
}

最佳答案

首先,您不需要为 ViewModel 创建 MetadataType 类。您可以直接在 ViewModel 中使用数据注释属性。 MetadataType 类用于由 EF 或其他 ORM 自动生成的模型,因此您可以在不接触自动生成的代码的情况下使用数据注释属性。

也不必使用 Bind 属性 - 除非您想使用 Bind 属性的 IncludeExclude 属性,以分别在绑定(bind)中包含或排除模型中的属性。

例如,在您问题的代码中,只有 IdName 属性会在从您的 View 提交模型时被绑定(bind)。即使您在 View 中输入了 CustomerProductUserName,当您提交表单时,该属性也始终为 null。这在您不希望绑定(bind)中包含自动生成的 ID 字段等情况下很有用。

从绑定(bind)中排除的属性也从验证中排除,因为验证是作为模型绑定(bind)的一部分完成的。此外,出于安全原因,您可以使用 Bind 属性;例如,当您想要确保只有模型中的属性被发布到 Controller 时。

关于c# - 在 ASP.NET MVC 中的 ViewModel 类上使用 Bind 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18276348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com