0

我想创建一个基于某些条件动态返回 yaml 文件的 asp.net 核心 ViewComponent:例如

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);
    }
}}
4

1 回答 1

0

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

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

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");
         }

结果: 结果

于 2022-02-22T09:56:47.863 回答