{获得; 组; 使用}在视图模型({ get; set; } used in ViewMode

2019-06-26 04:13发布

我使用C#与通过从控制器到该视图的视图模型一个ViewModel沿。

在我的视图模型,下面似乎像预期的那样它通过从视图回控制器描述信息的工作:

    public string Description { get; set; } 

但是,如果我有以下的,也不会传回的描述。 说明显示空

 public string Description  

为什么{获得; 组; }

很重要?

Answer 1:

我不知道很多关于asp.net MVC /剃须刀,但你2的代码示例之间的一个重要区别。

public string Description { get; set; }  

创建一个属性,编译一次,有在课堂上生成的私人领域,与访问字段get / set方法。 与声明的属性{获得;设置;}是等价的:

    private string _description;
    public string Description
    {
        get
        {
            return _description;
        }
        set
        {
            this._description = value;
        }
    }

但是以下几点:

public string Description;

创建一个简单的公共领域。

我的猜测是,剃须刀使用反射来从视图模型得到的值,它可能会寻找一个属性,而不是场。 因此,确定该属性不存在,因此返回null



Answer 2:

下面的语法是C#语言的功能“自动属性”。

public string Description { get; set; }

ASP.NET MVC使用reflectiondata-binding只与性质,而不是变量的工作。 使用性质为公共访问是要走的路。

推荐阅读此文章在这里笔者收回了他的“不喜欢”的公共属性。



Answer 3:

default model binder是结合该请求值到在模型的属性之一。 只绑定到公共的get-设置属性 ,甚至不公开字段中的值。

如果您想将值绑定到字段,那么你必须编写自己的模型绑定,但公共属性或好于公共领域,所以你不需要这个。



Answer 4:

这是一个所谓的自动性,本质上是下面的(类似的代码会被编译器生成)的缩写:

private string name;
public string Name
{
    get
    {
        return this.name;
    }
    set
    {
        this.name = value;
    }
}


文章来源: { get; set; } used in ViewModel