return yaml 文件如何作为 asp.net 核心 ViewComponent 的结果

How return a yaml file as result of an asp.net core ViewComponent

我想创建一个 asp.net 核心 ViewComponent,它根据某些条件动态 return 一个 yaml 文件: 例如

namespace MyNameSpace {

[ViewComponent(Name = nameof(MyViewComponent))]
public class MyViewComponent : ViewComponent
{
    
    public async Task<IViewComponentResult> InvokeAsync(object input)
    {
        string yamlDocument = GetYamlDocumentByInput(input);
        //how to proceed here so that my yamlDocument is returned with the right content type?
        return View(..., yamlDocument);
    }
}}

你可以搜索视图组件class,没有方法可以return一个文件作为结果。

你最好在你的控制器中添加一个下载文件的动作,你可以在你的视图被手动或自动渲染后发送一个请求到这个动作。 操作中有代码:

public FileResult DownLoad(Person  person)
       
        {
            
            var serializer = new SerializerBuilder()
                                    .WithNamingConvention(CamelCaseNamingConvention.Instance)
                                    .Build();
            var yaml = serializer.Serialize(person);            
            byte[] yamlArray = System.Text.Encoding.UTF8.GetBytes(yaml);
            return File(yamlArray, "application/x-yml");
         }

结果: