两个对象,这些对象定义有何区别?这让我感动了一段时间,因为这个特定对象被用作MVC控制器动作的参数,当视图中的值被POST时,第一个版本能够将绑定模型绑定到返回的值。第二个没有。
//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只具有声明的属性。两者都允许您在创建对象时设置/获取这些属性的值,但版本1 是唯一可以在定义为...的控制器方法上使用模型绑定的
public ActionResult Index(SecurityViewModel myModel)
任何人都可以详细说明这个吗?
答案 0 :(得分:2)
MVC绑定属性。第二个版本:
public class SecurityViewModel
{
public string Identifier;
public string CrdId;
}
使用fields,而非属性。
另见What is the difference between a Field and a Property in C#?