如果我要在asp.net mvc中渲染常规视图,则页面中显示的唯一域对象属性就是我专门写出的属性。例如:
<div><%= Customer.FirstName %></div>
但是,如果我序列化json的域对象,它将包含所有属性。例:
public JsonResult Customer (int? id) { Customer customer = _serviceLayer.GetCustomer (id.Value); return Json (customer); }
由于我不希望每个Customer属性都公开,在这种情况下,最好的方法是为json过滤输出属性?您可以使用诸如UpdateModel()的包含/排除列表吗?使用代理类,例如公共类JsonCustomer?你会推荐什么?
我为此使用匿名类型:
var customer = from c in serviceLayer.GetCustomers() where c.Id == id.Value select new { FirstName = c.FirstName };
这不仅仅是一个好主意。相反,它可以防止在对象图包含循环引用的情况下调用Json()时出现异常。