我有一个MessageModel类,它有一个字段 public string? AttachedFile

我的控制器向数据库添加了一条消息

[SwaggerOperation(Summary = "Create Message")]        
public async Task<IActionResult> AddMessage(MessageModel messageModel)
{
    if (messageModel.AttachedFile != null)
    {
        var mediaDto = _mapper.Map<MediaDto>(messageModel);
        var createdMedia = await _mediaService.Create(mediaDto);

        messageModel.SetMediaGuid(createdMedia);
    }
    return Ok(await _messageService.Create(_mapper.Map<MessageDto>(messageModel)));
} 

我的另一个控制器编辑邮件,但我不想在编辑现有邮件时更新AttachedFile域

[HttpPost]
[SwaggerOperation(Summary = "Edit Message")]

public async Task<IActionResult> EditMessage(MessageModel messageModel)
{
    await _messageService.Update(messageModel.Id, _mapper.Map<MessageDto>(messageModel));
    return Ok();
}

如何在使用编辑消息控制器时忽略AttachedFile域

推荐答案

可能最简单的 Select 是只使用两个单独的模型(可能有一些基本的模型来包含基本/共享props ):

public abstract class MessageModelBase
{
   // ...
}

public class AddMessageModel : MessageModelBase
{
   public ... AttachedFile {get; set;}
}

public class EditMessageModel : MessageModelBase
{
}

并使用它们:

[SwaggerOperation(Summary = "Create Message")]        
public async Task<IActionResult> AddMessage(AddMessageModel messageModel)
{
    // ...
} 

[SwaggerOperation(Summary = "Edit Message")]
public async Task<IActionResult> EditMessage(EditMessageModel messageModel)
{
    // ...
}

也可能是EditMessage个应该放,而不是张贴.

Csharp相关问答推荐

子组件:如何根据另一个组件的状态启用输入

当打印一行x个项目时,如何打印最后一行项目?

在Linq中调用需要limit和offset的方法''''

数组被内部函数租用时,如何将数组返回给ArrayPool?

NumPy s fftn in C#with pythonnet'

C#.NET依赖项注入顺序澄清

用C#调用由缓冲区指针参数组成的C API

Take()方法如何与IAsyncEnumerable一起使用

SortedSet.Remove()不会删除SortedSet.Min返回的元素

如何将此方法参数化并使其更灵活?

在.NET MAUI.NET 8中如何防止按钮点击时出现灰色反馈

System.Text.Json .NET 8多形态语法化

如何在.NET AOT中为所有枚举启用JsonStringEnumConverter

如何强制新设置在Unity中工作?

Blazor Server/.NET 8/在初始加载时调用异步代码是否冻结屏幕,直到第一次异步调用完成?

ASP.NET MVC数据批注验证组复选框

如何在C#中从MongoDB IPipelineStageDefinition中获取聚合命令的字段/选项?

无法使用直接URL通过PictureBox.ImageLocation加载图像

SqlException:无法打开数据库.升级到Dotnet 8后-数据库兼容性版本-非EFCore兼容性级别

我应该使用IMhemyCache来存储承载令牌,还是应该为Azure函数中的401个错误实施Polly重试策略?