Skip to main content
 首页 » 编程设计

c#之在 C# Web API 的 Controller 中隐藏模型类成员

2024年02月05日29zdz8207

我正在尝试学习和理解 C# Web API 和 MVC。 我了解简单的教程,其中有一个简单的 Product 或 Person 类作为模型,然后制作一个 CRUD Controller 来使用该模型。

但我需要它更复杂一点,无法弄清楚。

我有以下模型:

public class PersonModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Title { get; set; } 
    public DateTime LastUpdated { get; set; } 
} 

与我数据库中的表相同。 LastUpdated 列有一个默认约束:(GETUTCDATE())

我对在 PersonsController 的 POST 方法中公开 LastUpdated 不感兴趣:

 public void PostPerson(PersonModel person) 
 { 
     // Upload person to database 
 } 

因为这样就可以在 LastUpdated 中插入一个无效的日期时间——或者我必须在我的业务逻辑中手动设置 LastUpdated,但为什么不让我的 SQL 服务器来做呢? 无论如何要在 PostPerson 中隐藏 LastUpdated? 作为旁注,我希望能够在我的 GetPerson 方法中显示 LastUpdated。 这怎么可能?

请您参考如下方法:

在类中实现属性时,可以为 get 和 set 访问器指定不同的访问修饰符。

无论您是自己实现属性还是使用自动属性,都是如此。

访问修饰符的不同组合包括:

get/set both public – 客户端可以读/写属性值
get/set both private – 客户无权访问该属性
公开,设置私有(private) – 属性是只读的
私有(private),设置公共(public) – 属性是只写的

// get/set both public 
public string Name { get; set; } 
 
// get/set both private 
private string SecretName { get; set; } 
 
// public get => read-only 
public string CalcName { get; private set; } 
 
// public set => write-only 
public string WriteOnlyName { private get; set; }