为什么在MVC4中使用下划线序列化公共属性?

时间:2012-12-27 22:55:26

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

在以下课程中

using System;

namespace Beverati.Repository.ViewModel
{

[Serializable]
public class CollectionItem : EditableEntityBase
{

public CollectionItem() {}

private int? _quantity;
private string _retailValue;
private string _currencyName;

public int? quantity
{
  get { return this._quantity ?? NULL_INTEGER; }
  set { this._quantity = value; }
}

public string retailValue
{
  get { return this._retailValue ?? String.Empty; }
  set { this._retailValue = value; }
}

public string currencyName
{
  get { return this._currencyName ?? String.Empty; }
  set { this._currencyName = value; }
}

}
}

在此控制器操作中返回

public IEnumerable<Repository.ViewModel.CollectionItem> GetAll()

使用MVC2生成此JSON输出JSON输出,如此

{
  quantity:2
  retailValue: 50.00
  currencyName: USD
}

但是,当我安装MVC4时,返回的JSON看起来像这样

{
  _quantity:2
  _retailValue: 50.00
  _currencyName: USD
}

所有属性名称都有下划线前缀。为什么要使用下划线以及如何在JSON中返回公共属性名称?

1 个答案:

答案 0 :(得分:2)

[Serializable]属性正在做什么 - 假设你不需要它用于其他目的 - 删除属性,一切都应该很好。