Asp.net-Mvc

在 ASP.NET MVC 應用程序中為 json 輸出過濾域對象的最佳方法

  • December 19, 2019

如果我在 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() 時遇到異常。

您可以使用

$$ ScriptIgnore $$屬性(在 System.Web.Extensions 中)。有關範例,請參見http://www.creave.dk/post/2009/10/07/Excluding-properties-from-being-serialized-in-ASPNET-MVC-JsonResult.aspx 。

引用自:https://stackoverflow.com/questions/372955