Nat*_*Pet 13 asp.net-mvc razor
我正在使用c#以及将视图模型从控制器传递到视图的ViewModel.
在我的视图模型中,以下似乎按预期工作,因为它将描述信息从视图传递回控制器:
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是,如果我有以下内容,它将不会传回描述.描述显示为null
public string Description
Run Code Online (Sandbox Code Playgroud)
为什么{得到; 组; }
很重要?
Jf *_*lac 20
我不太了解asp.net MVC/Razor,但是你的2个代码示例之间有一个重要的区别.
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)
创建一个属性,一旦编译,该类中就会生成一个私有字段,并使用get/set方法访问该字段.使用{get; set;}声明的属性相当于:
private string _description;
public string Description
{
get
{
return _description;
}
set
{
this._description = value;
}
}
Run Code Online (Sandbox Code Playgroud)
但是以下内容:
public string Description;
Run Code Online (Sandbox Code Playgroud)
创建一个简单的公共字段.
我的猜测是剃刀使用反射从ViewModel获取值,它可能会查找属性,而不是字段.因此它确定该属性不存在,因此返回null
以下语法是C#语言功能"自动属性".
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)
ASP.NET MVC使用reflection并且data-binding仅使用属性而不是变量.使用属性进行公共访问是最佳选择.
建议阅读这篇文章,作者撤回了他对公共财产的"厌恶".
| 归档时间: |
|
| 查看次数: |
29082 次 |
| 最近记录: |