一尘不染

在ASP.NET MVC应用程序中为JSON输出筛选域对象的最佳方法

json

如果我要在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?你会推荐什么?


阅读 184

收藏
2020-07-27

共1个答案

一尘不染

我为此使用匿名类型:

var customer = from c in serviceLayer.GetCustomers()
               where c.Id == id.Value
               select new { FirstName = c.FirstName };

这不仅仅是一个好主意。相反,它可以防止在对象图包含循环引用的情况下调用Json()时出现异常。

2020-07-27