C# 两个对象之间的差异';s属性是自动实现的,而不是没有访问器

C# 两个对象之间的差异';s属性是自动实现的,而不是没有访问器,c#,asp.net-mvc,properties,model-binding,C#,Asp.net Mvc,Properties,Model Binding,两个对象,这些对象定义之间的区别是什么?这让我有点不知所措,因为这个特定的对象被用作MVC控制器操作的参数,并且当视图中的值被传递时,第一个版本能够对被传递回的值进行模型绑定。第二个没有 //version 1 public class SecurityViewModel { public string Identifier { get; set; } public string CrdId { get; set; } } // version 2 public class S

两个对象,这些对象定义之间的区别是什么?这让我有点不知所措,因为这个特定的对象被用作MVC控制器操作的参数,并且当视图中的值被传递时,第一个版本能够对被传递回的值进行模型绑定。第二个没有

//version 1
public class SecurityViewModel
{
    public string Identifier { get; set; }
    public string CrdId { get; set; }
}

// version 2
public class SecurityViewModel
{
    public string Identifier;
    public string CrdId;
}
使用这两个版本我仍然可以做到

SecurityViewModel mymodel = new SecurityViewModel();
mymodel.Identifier = "this";
mymodel.CrdId = "that";
所以很明显,即使没有自动实现的get和set,我仍然可以获取和设置属性的值

然而

版本1具有自动实现的属性,版本2仅声明了属性。两者都允许您在创建对象时设置/获取这些属性的值,但是版本一是唯一可以在定义为

public ActionResult Index(SecurityViewModel myModel)

有人能详细说明一下吗?

MVC绑定到属性。第二个版本:

public class SecurityViewModel
{
    public string Identifier;
    public string CrdId;
}
使用,而不是属性


另请参见

绑定需要属性。版本2有而不是.DOH!我不敢相信我没有看到。。。只要抛出{get;set;}就可以获取一个字段并将其转换为属性。