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");
}
结果:
我想创建一个 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");
}
结果: